在学习卷积神经网络的时候粗略记录了点东西,原文地址:https://www.zybuluo.com/hanbingtao/note/485480
激活函数:Relu
卷积神经网络特征
- 局部连接:每个神经元不再和上一层的所有神经元相连,而只和一小部分神经元相连。这样就减少了很多参数。
- 权值共享:一组连接可以共享同一个权重,而不是每个连接有一个不同的权重,这样又减少了很多参数。
- 下采样:可以使用Pooling来减少每层的样本数,进一步减少参数数量,同时还可以提升模型的鲁棒性。
卷积神经网络结构
下图为卷积神经网络示意图
一个卷积神经网络由若干卷积层、Pooling层、全连接层组成;它的架构模式可以表示为:
INPUT -> [[CONV]*N -> POOL?]*M -> [FC]*K
也就是N个卷积层叠加,然后(可选)叠加一个Pooling层,重复这个结构M次,最后叠加K个全连接层。
卷积神经网络每层的神经元是按照三维排列的,也就是排成一个长方体的样子,有宽度、高度和深度。
我们可以把Feature Map可以看做是通过卷积变换提取到的图像特征,三个Filter就对原始图像提取出三组不同的特征,也就是得到了三个Feature Map,也称做三个通道(channel)。
卷积层输出值的计算
当卷积神经网络的深度为1,步幅也为1的时候有如下计算公式:
利用图可以表示第一步如下:
往右移动一个步幅继续计算:
重复类似上述步骤直到算出所有的feature map。
步长为2的时候同理,但是Feature Map就变成2*2了。这说明图像大小、步幅和卷积后的Feature Map大小是有关系的。事实上,它们满足下面的关系:
卷积后Feature Map的深度(个数)和卷积层的filter个数是相同的。
Pooling层输出值的计算
Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在n*n的样本中取最大值,作为采样后的样本值。