卷积神经网络由 卷积层、池化层、全链接层组成,本文主要展现每个层次的组成以及基本参数运算法则。html
卷积层的主要做用是对输入的数据进行特征提取,而完成该功能的是卷积层中的卷积核(Filter),卷积核能够当作是一个指定窗口大小的扫描器。扫描器经过一次又一次地扫描输入的数据,来提取数据中的特征。举个例子,假设有一个 32*32*3 地图像,其中 32*32 指图像的高度和宽度, 3 指图像的深度,即图像有三个色彩通道(R: red、G: green、B: blue)。咱们定义一个3*3*3的卷积核,那么 3*3 就是指卷积核的高度和宽度, 3 指卷积核的深度,一般卷积核的高度和深度为 3*3 或者 5*5,深度同要是别的图像。若是输入的图像是单色彩通道的,那么卷积核的深度就是 1,以此类推。算法
卷积核处理图像矩阵的方法以下:网络
如上图所示,输入图像是一个 4*4*1 的单色彩通道图像,卷积核大小为 2*2*1 ,步长为1(即每移动一次,卷积核滑动的窗口位置变化),每一次卷积的操做过程就是将对应位置相乘,求和获得输出特征图矩阵的位置。ide
对于第一个元素,假设输入图像矩阵为W,卷积核矩阵为X,输出图像矩阵为Z,那么:函数
Z00=W00*X00+W01*X01+W10*X10+W11*X11;htm
Z01=W01*X00+W02*X01+W11*X10+W12*X11;blog
……图片
Z22=W22*X00+W23*X01+W32*X10+W33*X11;get
卷积效果能够经过边界像素填充方式提高。咱们在对输入图像进行卷积以前,有两种边界像素填充方式能够选择,分别是Valid和Same。Valid就是直接对输入图像进行卷积,不对输入图像进行任何前期处理和像素填充,这种方式可能会致使图像中部分像素点不能被滑动窗口(卷积核)捕捉;Same方式则是在输入图像以前将输入图像的最外层加上指定层数的值全为0的像素边界,这样可以使得输入图像的所有像素都能别滑动窗口(卷积核)捕捉。具体可参照下图。input
Valid模式,输入图像5*5*1,卷积核3*3*1,卷积核步长为1:
Same模式,输入图像7*7*1,卷积核3*3*1,卷积核步长为2:
(上图转载自http://www.javashuo.com/article/p-wjfdqyut-mb.html,做者gloomyfish )
经过对卷积过程的计算,咱们能够得出一个卷积的通用公式:
其中W(Weight)和H(Height)分别表示图像的宽度和高度,下标 input 表示输入图像的相关参数,output 表示输出图像的相关参数,filter 表示卷积核相关的参数,S表示卷积核的步长,P(Padding)表示在图像边缘增长的边界层数。若是选择的是 Same 模式,那么 P 的值等于图像增长的边界层数;而 Valid 模式下,P = 0.
用一个实例来讲明:对于一个 7*7*1 的输入图像,图像最外层使用了一层边界像素填充,卷积核大小为 3*3*1,步长为1,使用的是Same模式,那么输出图像的宽度和高度为为(7-3+2*1)/1 + 1 =7,深度同输入图像,即输出图像深度为 1,单色彩通道。
其中还能够加入偏置,即如同前一篇博文所讲(http://www.javashuo.com/article/p-kbtdzucw-ku.html),相似于这里只计算了 z=WT*X,以后能够再加入b做为偏置使得图像不通过原点。
池化层能够当作是卷积神经网络中的一种提取输入数据的核心特征的方式,不只实现了对数据的压缩,还减小了参与模型运算的参数,从而提升了计算效率。池化层处理的输入数据通常状况下是通过卷积操做以后生成的特征图。经常使用的池化层方法是最大池化层和平均池化层,以下图所示:
池化层也须要定义一个相似于卷积核的滑动窗口,称之为目标特征图,而输入的卷积层的原始输入数据称为原特征图。目标特征图的宽度和高度、步长相似卷积核,在此再也不赘述,最大池化层就是将一个滑动窗口的最大值赋值给目标特征图相应位置。而平均池化层就是将一个滑动窗口内的数值求平均值,将平均值赋值给目标特征图对应位置。(平均分母为滑动窗口内数的个数)
一样的,咱们也能够总结出一个适用于池化层的通用公式:
其中W(Weight)和H(Height)分别表示图像的宽度和高度,下标 input 表示输入图像的相关参数,output 表示输出图像的相关参数,filter 表示卷积核相关的参数,S表示滑动窗口的步长。
一样的,举个例子,由卷积层获得某图像的特征图为 16*16*6 大小,池化层的滑动窗口大小为 2*2*6,步长 stride 为 2,因而能够获得目标特征图大小为[(16-2)/2+1]*[(16-2)/2+1]*6=8*8*6,获得的特征图宽度和高度比原特征图压缩了近一半,这也印证了池化层的做用——最大限度地提取输入的特征图的核心特征,还能对输入的特征图进行压缩。
全链接层主要做用是将输入图像在通过卷积和池化操做后提取的特征进行压缩(不难看出,卷积层提取特征图,池化层压缩特征图并提取核心特征,全链接层压缩特征),并根据压缩的特征完成模型的分类功能。
举个例子:假设对于一张图片,咱们通过卷积和池化过程以后,获得了特征矩阵,大小为1*3072,而全链接层的权重参数矩阵为10*3072,即以下图所示
则在全链接以后,获得的将是一个1*10的核心特征矩阵,这10个参数已是一个分类的结果,再经激活函数的进一步处理,就能让咱们的分类预测结果更加明显。
加油!在秃头的路上高歌猛进!