LeNet5卷积神经网络源于Yann LeCun在1998年发表的论文:Gradient-based Learning Applied to Document Recognition (论文下载地址:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf),是一种用于手写数字识别的卷积神经网络。
LeNet-5是CNN网络架构中最知名的网络模型,是卷积神经网络的开山之作。
MNIST数据集(官网:http://yann.lecun.com/exdb/mnist/)是由Yann LeCun等人收集整理,其目的是用于手写数字识别模型的训练。主要包括了6万张训练图像和1万张测试图像,每张图像大小为28*28的灰度图像,即图像通道数为1。官网提供的下载分为四个文件,即训练集图像、训练集标签、测试集图像、测试集标签:
由于官网下载速度超慢,更快下载请移步:
mnist数据集下载——mnist数据集提供百度网盘下载地址
上图是LeNet5原文中的截图,LeNet5包含了卷积网络的基本组成部分:卷积、池化及全连接。顾名思义,LeNet5为5层的卷积神经网络:3层卷积和2层全连接层组成。
网络层 | 类型 | 特征图 | 尺寸 | 核大小 | 步长 | 激活函数 |
---|---|---|---|---|---|---|
输出层 | 全连接层 | 10 | None | None | None | RBF |
F6 | 全连接层 | None | 84 | None | None | tanh |
C5 | 卷积层 | 120 | 1*1 | 5*5 | 1 | tanh |
S4 | 平均池化层 | 16 | 5*5 | 2*2 | 2 | tanh |
C3 | 卷积层 | 16 | 10*10 | 5*5 | 1 | tanh |
S2 | 平均池化层 | 6 | 14*14 | 2*2 | 2 | tanh |
C1 | 卷积层 | 6 | 28*28 | 5*5 | 1 | tanh |
输入层 | 输入 | 1 | 32*32 | None | None | None |
注意:通常输入层不计入神经网络层数。
输入层为32*32大小的灰色图像。通常输入层不计入神经网络层数。
MNIST数据集图像大小为28*28,因此在喂入网络前对图像四周进行0填充,使得大小变为32*32,并且对像素值进行归一化处理。
输入:1个32*32的图像
卷积:卷积层1选取6个5*5的卷积核,步长为1,非全0填充,因此输出图像长宽为(32-5+1)/1=28。
参数:6*5*5+6*1=156。
连接数:(5*5+1)*6*28*28=122304
输出:为6个28*28的特征图
输入:6个28*28的特征图
参数:6*1+6*1=12
连接数:(2*2+1)*6*14*14=5880
输出:6个14*14的特征图
该层在LeNet5原文中称作降采样层(sub-sampling layer),使用了6个2*2的卷积核,具体运算过程为:2*2的视野中4个数求和后乘上一个可训练的权重并加上一个偏置,
注意:目前卷积神经网络普遍的做法是平均池化或最大池化,最大池化更常用。因此这一层池化层可以改进为平均池化或最大池化即可,不用再乘以权重和加上偏置。
输入:6个14*14的特征图
卷积:卷积层2选取16个5*5的卷积核,步长为1,非全0填充,因此输出图像长宽为(14-5+1)/1=10。
参数:6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516
连接数:(3*5*5+1)*6*10*10+(4*5*5+1)*6*10*10+(4*5*5+1)*3*10*10+(6*5*5+1)*1*10*10=151600
输出:16个10*10的特征图
注意:卷积层3的前6个feature map(对应下图第一个红框的6列)与3.3中降采样层的相连3个feature map相连接(下图第一个红框);之后6个feature map与3.3中降采样层的相连4个feature map相连接(下图第二个红框);之后3个feature map与3.3中降采样层部分不相连的4个feature map相连接;最后一个feature map与3.3中降采样层的所有feature map相连。
输入:16个10*10的特征图
参数:16*(1+1)=32
连接数:(2*2+1)*16*5*5=2000
输出:16个5*5的特征图
输入:16个5*5的特征图
卷积:卷积层5选取120个5*5的卷积核,步长为1,非全0填充,因此输出图像长宽为(5-5+1)/1=1。
参数:120∗(25∗16+1)=48120
连接数:120∗(25∗16+1)=48120
输出:为120个1*1的特征图
注意:总共生成120个feature map,每个feature map与上一层所有的feature map相连接,卷积核大小为5*5,因此共有120∗(25∗16+1)=48120个连接。
输入:120维的向量
神经元:84个
参数:120*84+84=10164
连接:120*84+84=10164
输出:84维向量
输入:84维向量
神经元:10个
参数:0(由于输出层采用的是径向基函数,所以参数个数为0)
连接数:84*10=840
输出:10(对应10个分类结果)
LeNet5总共5层:3层卷积和2层全连接,池化层未计入层数。参数总数为60000个,而连接数达340908,连接数远远多于参数个数,这主要归功于卷积核的参数共享。
LeNet5是卷积神经网络的开篇大作,稍显复杂、晦涩难懂,或者说与现在的卷积神经网络相比有些绕,但在当年来说是非常了不起的成就,完成了卷积神经网络从无到有的突破。
请移步:
实现方案1:TensorFlow2利用MNIST数据集实现LeNet5卷积神经网络模型
LeNet5论文原著:Y. Lecun ; L. Bottou ; Y. Bengio ; et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11):2278-2324.