当前位置: 代码迷 >> 综合 >> 【CNN网络结构】LeNet-5
  详细解决方案

【CNN网络结构】LeNet-5

热度:57   发布时间:2023-12-15 17:15:05.0

作者:Yann LeCun

年份:1998

论文:《Gradient-Based Learning Applied to Document Recognition》

应用:手写体字符识别

特点:网络结构规模较小,但包含了现代CNN网络的基本组件:卷积层、池化层、全连接层。

层数:8层(含输入层)

卷积层的作用:通过卷积操作,使原信号特征增强,并降低噪音。不同的卷积核能够提取到图像中的不同特征。

池化层(下采样层)的作用:利用局部相关性原理,对图像进行子抽样,可以减少数据处理量,同时也可保留一定的有用信息。

池化层的目的:降低网络训练参数及模型的过拟合程度。

训练参数个数、层之间的连接数:

1,每个卷积核都是一个权重参数矩阵,并且除权重参数外,还带有一个偏置参数

所有卷积核的参数+ 偏置参数 = 总的训练参数

如Conv1层有6个5*5的卷积核,每个卷积核带1个偏置参数,总的参数=6*(5*5+1)=156

2,一个神经元是输出feature map的一个像素

如 根据 Wout = [ (Win - Wkernel + 2 * padding ) / stride ] + 1 , paddint = 0 , stride = 1的情况下,Conv1的输出feature map的shape为(28*28)*6,每个feature map有28*28个神经元。

输出的同一个feature map中的每个值都是由同一个卷积核计算得到。这也叫做权值共享

3,两层之间的连接数 = 训练参数个数 * 输出层神经元个数

如Conv1的每个像素(每个神经元)都与输入图像中的5*5个像素和1个bias有连接(这也叫局部连接。计算连接数时不考虑输入为多少通道),所以Conv1层和输入层之间总共有(5*5+1)*6*28*28=156*28*28=122304个连接

池化层每个神经元和Conv1层输出的feature map的 2*2区域相连(如a1, a2, a3, a4),每个神经元的输出为:sigmoid((a1+a2+a3+a4)*w1+b1)。池化层输出feature map的shape为 (28/2 * 28/2)* 6 = (14*14)*6 (因为使用的是最大池化:用不重叠的矩形框将输入层分成不同的区域,对于每个矩形框的数取最大值作为输出层)

池化层总共有 (14*14)*6=1176个神经元。总共有 (4+1)* (14*14)*6=5880个连接。

池化层总共有 (1+1)*6=12 个参数。因为每个输出feature map只对应同一个权重参数w和同一个偏置参数b。

LeNet-5采用的是后来被称为平均池化的方法(论文中当时叫下采样subsampling),不是最大池化。

参考:https://cuijiahua.com/blog/2018/01/dl_3.html

https://www.zhihu.com/question/66029994

LeNet 网络图:

  相关解决方案