一、结构
1.卷积过程:
输入图片尺寸为(batchsize,l,w,channels),l表示长度,w表示宽度,channels表示通道数,batchsize为每次输入神经网络的图片张数。默认(1,6,6,1)。
卷积核大小为(numbers,l1,w1,channels),l表示长度,w表示宽度,channels表示通道数,应与被卷积的特征图(输入的图片)的通道数相同,numbers表示卷积核的个数。默认(1,3,3,1)。
(1)当直接对特征图进行卷积时,步长(stride)为1,符合公式,。新特征图的长度为l',宽度为w',得到(1,4,4,1)。
(2)当直接对特征图进行卷积时,步长(stride)为>=2,符合公式,,其中floor表示向下取整(保留整数),新特征图的长度为l',宽度为w',得到(1,2,2,1)。
(3)当需要使输出图片的长宽与输入图片的长宽相同时,需要进行全零填充。符合公式,,其中p表示对输入图片的一周进行全零填充,例:当p=1时表示对输入图片的一周进行全零填充一次。得到(1,6,6,1),其中p=1。注意:在keras的Conv2D函数中需设置padding='same',并且步长必须为1,即strides=(1,1)才可使特征图的长宽保持不变。
例:
当padding='same'且strides=(2,2)时,输出图片长宽并不是6*6,而是3*3,并没有进行全零填充,而是向上取整。
例:
当padding='same'且strides=(1,1)时,输出图片长宽才是6*6,进行了一次全零填充。
2.参数(param):注意:一个神经元配置一个偏置量(bias),一个卷积核配置一个偏置量(bias)。
(1)全连接层(Dense)的参数量
计算公式为:输入向量的参数个数*输出神经元个数(乘积得到的结果表示权重weights的参数量)+输出神经元个数(表示偏置bias的参数量)
例:
如上图所示,Flatten()的作用是将三维(6,6,1)转为一维向量(36,),经过一次隐藏层(32个神经元),参数量为:
36*32+32=1184。
(2)卷积层(Conv2D)的参数量
计算公式为:卷积核的长*宽*通道数*个数(乘积得到的结果表示权重weights的参数量)+卷积核的个数(表示偏置bias的参数量)
例:
如上图所示,参数量为:5*3*3*3+5=140。