在上篇中,对卷积神经网络的卷积层以及池化层模块进行了简单的介绍,接下来将对卷积神经网络的整个运作流程进行分析,以便对CNN有个总体上的认知和掌握。

       如下图,卷积神经网络要完成对图片数字的识别任务。网络的输入是数字为7的RGB图片,大小为32×32×3,其中32×32为图片的像素大小,3表示图片的红、绿、蓝三个通道。图中示例的卷积神经网络共有7层(不包括输入层):第一层卷积层Conv 1,第二层池化层Pool 2,第三层卷积层Conv 3,第四层池化层Pool 4,第五层全连接层FC 5,第六层全连接层FC 6,第7层全连接层也是网络的输出层FC 7。

       需要说明的是,图示网络模型只是卷积神经网络的一种结构,并不是唯一结构,卷积层、池化层、全连接层的数量可根据实际情况设置。

1维CNN网络架构 cnn网络层数_卷积核

(1)Conv 1

  一个5×5×3的卷积核和表示图片的32×32×3的数据矩阵卷积得到一个28×28×1的feature map,如下图所示。

       

1维CNN网络架构 cnn网络层数_卷积_02

   一个卷积核卷积得到一个feature map,当有6个卷积核时,卷积得到的特征图大小变为28×28×6。

1维CNN网络架构 cnn网络层数_卷积核_03

  参数量:一个卷积核权值参数个数5×5×3=75,偏置参数1个,75+1=76个。一共有6个卷积核,故该层待训练总参数个数:(5×5×3+1)×6=456。

输出特征图的通道数和卷积核的数量一样。

(2)Pool 2

池化层不会改变特征图的通道数,即输出特征图的通道数和输入特征图的通道数一样。池化层没有待训练参数。池化层未使用非线性激活函数。

(3)Conv 3

  卷积核大小5×5×6,数量是16,步幅s=1,输出特征图大小为(14-5+1)×(14-5+1)×16=10×10×16。输入特征图经过卷积操作还得经过非线性函数的激活后才能得到Conv 3层的输出。

  参数量:(5×5×6+1)×16=2416。

(4)Pool 4

要注意的是,当前层的输出不是一维向量,是无法直接连接下一层的全连接层的。因此,经过池化得到的输出特征图还要经过flatten操作变为400×1的向量后,才能作为全连接层的输入。

(5)FC 5

     该层有120个神经元。

  参数量:400×120+120=48120。

(6)FC 6

  该层有84个神经元。

  参数量:120×84+84=10164。

(7)FC 7(Output)

  网络的输出层,有10个神经元,使用SoftMax激活函数,神经元节点输出值对应10个数字的概率大小。

  参数量:84×10+10=850。

 

       当网络得到10个数字的概率以后,取概率最大的那个数字即为本次神经网络的图片数字识别结果啦~