CNN网络经典之作-LeNet5详解
LeNet5 介绍
LeNet通常就指LeNet5,该网络诞生于1998年,作者是Yann LeCun,当初被设计用来识别手写数字,是最早的CNN网络之一,被后续学者奉为经典,该论文的下载地址 http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=054E02BBBFEFE6B1C98D119DC503F6A7?doi=10.1.1.42.7665&rep=rep1&type=pdf
在加拿大瑞尔森大学的官网上,有一个LeNet手写数字识别的3D可视化模型,想要了解LeNet的同学们,可以先到这个网站上体验一下,对理解LeNet会有很大的帮助,网址 https://www.cs.ryerson.ca/~aharley/vis/conv/
网络结构
论文中的网络结构图如下:
包含输入输出层,LeNet-5 一共有8层网络,分为
Input 输入层、C1 卷积层、S2 下采样池化层、C3 卷积层、S4 下采样卷积层、C5 卷积层、F6 全连接层、Output 输出层。
Input 输入层
LeNet-5 输入图像为单通道的32x32大小的手写数字图像。
C1 卷积层
卷积层是用作特征提取的图层,C1 卷积层这里使用了6个5x5大小的卷积核,卷积步长为1。该层接收输入层传入的32x32大小的单通道图像,输出为6个特征平面,每个特征面的尺寸为28x28大小(32-5+1)。
连接数为 (5x5+1)x28x28x6 = 122304个。
权值数为6个卷积核的权值参数,每个卷积核有5x5个权值+1个偏移量,共有(5x5+1)x6 = 156个。
S2 池化层
池化层就是下采样层,用来降低数据的维度,一般在CNN(卷积神经网络)中,一组卷积操作之后会接一个池化层。卷积层提取完特征后相当于对数据进行一次抽象,数据量可以进行一次压缩。
池化层一般有 最大值池化、平均值池化两种,LeNet5网络当初使用的是平均池化,后来人们发现最大值池化效果更好一下,目前使用LeNet5网络的时候很多都会改用最大值池化。
该池化层输入为6个28x28的特征图,对每个特征图分别进行2x2大小的窗口进行下采样,下采样后每个特征图的尺寸长宽各缩小一半,变为14x14,即输出为6个14x14大小的特征图。
C3 卷积层
该卷积层有16个特征平面,输入6个14x14大小的特征图,输出为16个10x10大小的特征平面(14-5+1=10)。
不同于C2层,该层的特征平面和上一层的池化层并不是每一个特征平面都与所有的上层特征平面相连,连接关系矩阵如下所示:
前6个特征平面只中每一个平面只与上层6个平面中的3个相连,第7-15层每层与4个相连,只有最后一个特征平面才与上层所有特征面相连。这么设计的目的论文中有讲到,主要是为了打破对称性,提取深层特征,因为特征不是对称的,因此需要打破这种对称,以提取到更重要的特征。
连接数,前6个 特征平面 (5x5x3+1)x10x10x6=45600,第7-15个为 (5x5x4+1)x10x10x9=90900,最后一个 (5x5x6+1)x10x10x1=15100,总个数为 151600个。
权值数,(5x5x3+1)x6 + (5x5x4+1)x9 + (5x5x6+1)x1 = 1516个。
S4 池化层
输入为16个10x10大小的特征平面
输出为16个5x5大小的特征平面
C5 卷积层
这是一个比较特殊的卷积层,特殊之处在于卷积核大小刚好等于输入特征图的大小,都是5x5的尺寸,导致该卷积层的输出为1x1大小的特征图。该卷积层使用了120个卷积核,输出为120个1x1大小的特征图。
该层的连接数为 (5x5x16+1)x120=48120个,权值也是这么多个。
F6 全连接层
有84个神经元大小的全连接层,相当于BP网络的隐藏层,连接个数与权值数都为(120+1)x84=10164个。
参考文章
https://blog.csdn.net/weixin_42398658/article/details/84392845