LeNet-5
LeNet-5
由Yann LeCun
在1998年提出,旨在解决手写数字识别问题,被认为是卷积神经网络的开创性工作之一。该网络是第一个被广泛应用于数字图像识别的神经网络之一,也是深度学习领域的里程碑之一。
LeNet-5
的整体架构:
总体来看
LeNet-5
由两个部分组成:
- 卷积编码器:由两个卷积层和两个下采样层组成;
- 全连接层密集块:由三个全连接层组成
特点:
1.相比MLP
,LeNet
使用了相对更少的参数,获得了更好的结果。
2.设计了MaxPool
来提取特征
代码实现
1. 模型文件的实现
通过观察模型的整体架构,可以知到LeNet-5
只用了三个基本的层——卷积层、下采样层、全连接层,因此我们很容易写出模型的基本框架。
其中
Gaussian connections
也是一个全连接层。Gaussian Connections
利用的是RBF
函数(径向欧式距离函数),计算输入向量和参数向量之间的欧式距离。目前该方式基本已淘汰,取而代之的是Softmax
。
为了提高模型的性能,我们会在卷积层与下采样层之间添加一个Relu
激活函数,因此模型的整体流程架构为:
Convolutions
->Relu
->Subsampling
->Convolutions
->Relu
->Subsampling
->Full connection
->Full connection
->Full connection
在pytorch
中,卷积层对应的是nn.Conv2d()
方法, 下采样层可以使用pytorch
中的最大池化下采样nn.MaxPool2d()
方法来实现,全连接层可以使用nn.Linear()
方法来实现。
确定参数:
卷积层:对于LeNet-5
论文中输入的图片是 32 × 32 32 \times 32 32×32大小的图片(图片通道个数为3
)。因此第一个卷积层的输入的通道个数为3
,输出的通道个数为16
,也就是说一共有16
个卷积核。卷积核的个数等于通过卷积后图片的通道个数。
我们可以根据如下公式来计算出卷积核的大小。
计算卷积后图像宽和高的公式
I n p u t : ( N , C i n , H i n , W i n ) Input:(N, C_{in},H_{in},W_{in}) Input:(N,Cin,Hin,Win)
O u t p u t : ( N , C o u t , H o u t , W o u t ) Output:(N,C_{out},H_{out},W_{out}) Output:(N,Cout,Hout,Wout)
H o u t = [ H i n + 2 × p a d d i n g [ 0 ] − d i l a t i o n [ 0 ] × ( k e r n e l _ s i z e [ 0 ] − 1 ) − 1 s t