所谓卷积
卷积神经网络与常规神经网络:
输入差异:常规神经网络接受的是单个向量;卷积神经网络架构假设输入的是图像
参数数量:常规神经网络中每个神经元与临层神经元全连接。如果对于尺寸大一点的图片所产生的参数量非常巨大。巨大的参数量会导致神经网络过拟合。是一种浪费。而卷积神经网络中,一层的神经元将仅连接到该层之前的一小部分区域。


卷积网络的层:
卷积层+池化层+完全连接层;堆积这些层以形成完整的卷积网络体系。
以CIFAR-10为例:
输入:保存图像的原始像素值,例如:宽:32,高:32,深度:3;
卷积层:计算连接到输入局部区域的神经元输出,每个神经元计算他们的权重与它连接到输入的局部区域之间的点积。如果决定使用12个滤波器(卷积核),则可能导致【32*32*12】之类的体积
激活:rule、tanh、sigmod。。。
池化层:沿空间尺寸(宽,高)执行采样操作,包括最大池化,均值池化。从而产生例如【16*16*12】之类的体积。
全连接层:计算各个类别的概率。与普通神经网络一样。
(卷积,全连接层会有参数,但是激活和池化层没有参数)

卷积层:
由一组可学习上的滤波器组成,每个滤波器在空间(宽,高)上都很小,但是会延伸到整个深度【5*5*3】。
在前进的过程中,将每个滤波器在输入体积的宽度和高度上滑动(卷积),计算滤波器自身的值与输入位置的点积。生成一个二维激活矩阵。
网络要学习的是滤波器。每个卷积层都拥有一组滤波器,,并且每个滤波器都会生成一个单独的激活矩阵,然后沿着深度维度堆积这些激活矩阵产生输出量。
每个神经元仅连接到输入体积的局部区域,这个局部区域称为神经元的感受野(滤波器的大小)。连接在空间中是局部的(宽度,高度),连接在深度上是完整的,深度的连通程度始终等于输入体积的深度。(每个神经元与输入体积的连通性)
输出体积的控制:深度,步幅,零填充(用零填充)
1,输出体积的深度是一个超参数,对应于我们要是用的滤波器的数量。每次学习都在寻找输入中的不同东西。
2,必须指定滤波器滑动的步幅,及移动的像素。步幅越大则产生的输出量越小。
3,零填充的大小是一个超参。有时在输入边界周围用零来填充。零填充允许我们控制输出体积的空间大小。
输出宽度=(W[输入宽度]-F[滤波器的宽度]+2*P[零填充的层数])/S[滑动的步距]+1;输出高度同样。
使用零填充:
约束步距:在图像尺度,滤波器以及零填充确定的时候,步距并不是任意选择的。一定要保证输出体积的·尺寸是整数。如果所选的步距计算出来不是整数则卷积框架会给其做相应的调整(具体怎么调整,我还每细究)
“现实世界的例子。2012年赢得ImageNet挑战的Krizhevsky等人的模型接受了尺寸大小的图像[227x227x3]。在第1个卷积层,使用接受域大小为F=11, stride为S=4,没有补零P=0的神经元。由于(227 - 11)/4 + 1 = 55,由于Conv层深度K=96,所以Conv层输出卷大小[55x55x96]。本卷中的55*55*96个神经元分别连接到输入卷中的一个大小为[11x11x3]的区域。此外,每个深度列中的96个神经元都连接到输入的相同[11x11x3]区域,当然权重不同。有趣的是,如果你阅读了实际的论文,它声称输入图像是224x224,这肯定是不正确的,因为(224 - 11)/4 + 1显然不是一个整数。这让对流的历史上的许多人感到困惑,而对发生了什么却知之甚少。我自己的最佳猜测是,Alex使用了额外的3个像素的补白,但他在论文中没有提到。”,“对,我当时就算也是224不正确,让人迷惑不解”

卷积运算实质上是在滤波器和输入的局部区域之间执行点积。
对于池化

未完。。。
浙公网安备 33010602011771号