卷积层

当一个深度神经网络以卷积层为主体时,我们称为卷积神经网络。

卷积运算:

图片分黑白和彩色,在图像里我们相应地有灰度图像和灰色图像。对于灰度图像,由于只有阴暗的区别,因此我们只需要一个数字就可以表示出不同的灰度。如:0表示最暗的黑色,255表示为最亮的白色。对于彩色图像我们就用(R,G,B)三个数字表示一个颜色。
也就是说图像是三维形状的。当输入对象为图像时,卷积层会以3维数据的形式接受输入数据,并同样以3维数据的形式输出者下一层。
神经网络的卷积层就是运用卷积运算对原始图像或者上一层的特征进行变换的层。我们利用多个不同的卷积核(filter)【也可以叫做滤波器】对输入进来的三维图像提取特征,一个卷积核就可以得到一个张量。最后就可以获得一个全新的三维张量(特征图),通常一个深度神经网络的第一个卷积核会以图像作为输入,而之后的卷积核会以前面的层输出的特征图作为输入。
通过动图来形象的了解卷积运算。
入门卷积神经网络学习(一):卷积层
入门卷积神经网络学习(一):卷积层
从这两幅图中,我们大概明白了卷积运算的方法,但是拿2图来说,一个5x5的输入在经过3x3的卷积核时,会输出3x3的输入。但是会造成经过几次运算后,我们得到的输入可能就变成了1x1.
{卷积运算:一个输入时m维,一个卷积核时n维,且m>n时,输出为m-n+1}
接着我们回头看1图。引出了填充与步幅。
1图中的输入的蓝色部分为5x5,卷积核为3x3,那么得到的输入应该是3x3.
为了防止出现上述的情况,我们在蓝色部分外增加了以幅度为1的0填充。使用填充的目的是为了调整输出的大小。当然这个填充的数值可以为0,可以为1,2,3等等。
那现在的输入时7x7了,为什么我们的输出还是3x3呢。
是因为这次运算的步幅为2。也就是一个7行的张量,卷积核从第一行做完紧接着要从第二行开始,但是因为步幅为2所以我们从第三行开始。
所以说(增大填充,输出增大。增大步幅,输出减小。)
代入公式就是输出大小为(H,W),卷积核为(FH,FW),输出大小为(OH,OW),填充为P,步幅为S。
OH=(H+2P-FH)/S+1
OW=(W+2P-FW)/S+1
举个例子:
输入大小为(4*4),填充为1,步幅为1,卷积核的大小为(3,3)
OH=(4+2x1-3)/1+1=4
OW=(4+2x1-3)/1+1=4
得到的输出结果就为(4,4)

现在再来看1图,1图中所展现的不是(7x7)的输入,而是(7x7x3)的输入,也就是三维输入。
我们将它拆开为了3个二维,与三个卷积核进行卷积运算。
入门卷积神经网络学习(一):卷积层
结合一下1图和3图能更清楚的明白卷积运算对三维输入时怎么去做的。

再看一次3图。我们用一个三维的输入和一个三维的卷积核,得到一个二维的输出。那当我们再次做卷积的时候输入变成了二维的不就出错了?
所以我们回头看向1图,1图中,我们设置了两个不同的卷积核与两个不同的偏置。得到了两个不同的二维输出,将这两个二维的输出一组合就是一个三维的输出了。
我们接着看图4.
入门卷积神经网络学习(一):卷积层
一个三维的输入数据。(C,H,W)。我们想让输出数据也是三维的,我们需要FN个卷积核()。我们需要注意的是输入数据和卷积核的C值一定要相同。
这就是三维的输出数值。

相关文章: