卷积神经网络

有多个二维平面组成的卷积神经网络主要封你为特征提取层和特征映射层。本层神经元的输入通过局部感受野与上层神经元相连,构成特征提取层;将提取的特征映射为一个所有神经元共享权值的平面,构成特征映射层。每个特征提取层后跟一个用来局部求平均与二次提取的降采样层。

特点:使得网络对输入样本有较强的畸变容忍能力

      卷积神经网络的网络连接具有局部连接、参数共享的特点

LeNet-5模型为基础介绍卷积神经网络

卷积神经网络_第1张图片

LeNet-5中主要的有卷积层、下抽样层、全连接层3中连接方式

LeNet-5不包含输入,共7层,每层都包含若干个可供训练和学习的参数。

 

注:卷积核对原始图像卷积的结果加上相应的阈值,得出的结果再经过激活函数作用输出形成卷积层(C层),提取的这些特征会在后续形成更高一级的特征,同一特征图的神经元共享权值,降采样层(S层)为减少学习参数对上一层进行抽样平均。

输入:32*32的手写字体图片,这些手写字体包含0~9数字,也就是相当于10个类别的图片

输出:分类结果,0~9之间的一个数

因此我们可以知道,这是一个多分类问题,总共有十个类,因此神经网络的最后输出层必然是SoftMax问题,然后神经元的个数是10个。

 

LeNet-5结构:

输入层:32*32的图片,也就是相当于1024个神经元

C1层:由6个大小为28*28的特征图组成的卷积层卷积神经网络_第2张图片

LeNet-5中最复杂的是S2到C3层

卷积神经网络_第3张图片

C3层:由16个大小为10*10的特征图组成的卷积层,这一层我们选择卷积核的大小依旧为5*5,据此我们可以得到新的特征图大小为14-5+1=10,然后我们希望可以得到16张特征图。那么问题来了?这一层是最难理解的,我们知道S2包含:6张14*14大小的图片,我们希望这一层得到的结果是:16张10*10的图片。这16张图片的每一张,是通过S2的6张图片进行加权组合得到的,具体是怎么组合的呢?

每个特征图与S2层的若干个特征图的卷积核5*5相连,图2.4中X表示两层特征图之间有连接,可知当前层的特征图可能与前一排的几个特征图之间有卷积关系。图2.4中,前6个特征图与S2层连续的3个特征图相连接,后面接着的6个特征图与S2层连续的4个特征图相连接,然后的3个特征图与S2不连续的4个特征图相连接,最后一个特征图与S2的所有特征图相连接,卷积核为5*5大小,所以总共有6*(3*5*5+1+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516个参数,而图像大小为10*10,所以共有151600个连接。

 

S4层:16张大小为5*5的下采样层,即对C3的16张10*10的图片进行最大池化,池化块的大小为2*2。因此最后S4层为16张大小为5*5的图片。至此我们的神经元个数已经减少为:16*5*5=400。参数为16*(1*1+1)=32个,5*5*16(2*2+1)=2000个连接。

 

C5层:120个1*1的特征图组成的卷积层,即继续用5*5的卷积核进行卷积,然后我们希望得到120个特征图。这样C5层图片的大小为5-5+1=1,也就是相当于1个神经元,120个特征图,因此最后只剩下120个神经元了。这个时候,神经元的个数已经够少的了,后面我们就可以直接利用全连接神经网络,进行这120个神经元的后续处理。 而有120*(15*16+1)=48120个参数。

 

F6层:与C5全链接的84个神经元,所以有84*(120+1)=10164个参数

 

输出层有代表0-9共10个字符的神经元组成,采用双正切函数作为激活函数,在分类器阶段选用的是径向基函数(RBF)

卷积神经网络_第4张图片

上面的结构,只是一种参考,在现实使用中,每一层特征图需要多少个,卷积核大小选择,还有池化的时候采样率要多少,等这些都是变化的,这就是所谓的CNN调参,我们需要学会灵活多变。

比如我们可以把上面的结构改为:C1层卷积核大小为7*7,然后把C3层卷积核大小改为3*3等,然后特征图的个数也是自己选,说不定得到手写字体识别的精度比上面那个还高,这也是有可能的,总之一句话:需要学会灵活多变,需要学会CNN的调参。

 

 

你可能感兴趣的:(cnn)