一、LeNets5
1. 铭记历史
1998年Yann LeCun等提出LeNets5 ,是第一个成功应用于手写数字识别问题并产生实际商业(邮政行业)价值的卷积神经网络
论文:Gradient-based learning appl ied to document re cognition
中文可参考:https://blog.youkuaiyun.com/quicmous/article/details/105730556
2. 网络模型结构
2.1 整体结构解读
一共七层,3个卷积层,2个池化层,2个全连接层
输入图像:32×32×1
三个卷积层:
C1包括6个5×5卷积核
C3包括60个5×5卷积核(通道)
C5包括120×16个5×5卷积核
两个池化层S2和S4:
都是2×2的平均池化,并添加了非线性映射
第一个全连接层:84个神经元
第二个全连接层: 10个神经元
所有激活函数采用Sigmoid
2.2 LeNets5网络细节
2.2.1 C1层-卷积层
- 输入图片:32×32
- 卷积核大小:5×5
- 卷积核种类:6
- 输出特征图大小:28×28 (32-5+1)=28
- 可训练参数:(5×5+1) × 6(每个滤波器 5 ×5=25个unit参数和一个bias参数,一共6 个滤波器)
2.2.2 S2层-池化层(下采样层)
- 输入:28×28
- 采样区域:2×2
- 采样方式:输入相加,乘以一个可训练参数, 再加上一个可训练偏置,使用sigmoid激活
- 池化层实际就是一个AvgPooling,只是加了一个参数和偏执,后面的网络在池化后一般也不会激活
- 输出特征图大小:14×14(28/2)
2.2.3 C3层-卷积层
- 输入:S2中所有6个或者几个特征图组合
- 卷积核大小:5×5
- 卷积核(通道)种类:16个卷积核60个通道 :6×3 + 6×4 + 3×4 + 1×6
- 输出特征图大小:10×10 (=(14-5)/1+1)
- 可训练参数: 6×(3×5×5+1) + 6×(4×5×5+1) + 3×(4×5×5+1) + 1×(6×5×5+1)=1516
非密集的特征图连接关系
从图中可以看到:
C3的前6个特征图与S2层相连的3个特征图相连接,后面6个特征图与S2层相连的4个特征图相连 接,后面3个特征图与S2层部分不相连的4个特征图相连接,最后一个与S2层的所有特征图相连。 采用非密集连接的方式,打破对称性,同时减少计算量,共60组卷积核
2.2.4 S4层-池化层(下采样层)
- 输入:10×10
- 采样区域:2×2
- 采样方式:输入相加,乘以一个可训练参数,再 加上一个可训练偏置,使用sigmoid激活
- 输出特征图大小:5×5(10/2)
2.2.5 C5层-卷积层
- 输入:S4层的全部16个单元特征map
- 卷积核大小:5×5
- 卷积核种类:120
- 输出特征图大小:1×1(5-5+1)
- 可训练参数/连接:120 ×(16×5×5+1)=48120
2.2.6 F6层-全连接层
- 输入:c5 120维向量
- 计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出
- 可训练参数:84×(120+1)=10164
F6全连接层的输出设计为什么是84个节点
计算机中 字符的编码是ASCII编码,这些图是用7×12大小的位图表示, -1表示白色,1表示黑色,84可以用于对每一个像素点的 值进行估计。
2.2.7 Output层-全连接层
共有10个节点,分别代表数字0到9
y i = ∑ j ( x j − w i j ) 2 y_i=\sum_j(x_j-w_{ij})^2 yi=j∑(xj−wij)2
径向基函数(RBF)的网络连接方式,输入向量与参数向量的欧式距离。 x是激活后的输出,y是RBF的输出(误差值,最小的即为分类结果),wij是参数(人为设定的,取值-1或者1),i从0~9,j从0~83
3.网络模型实现
3.1 模型定义
import torch