文章目录
- LeNet简介
- LeNet7层结构
- C1:第一个卷积层
- S2:第一个下采样层
- C3:第2个卷积层
- S4:第2个下采样层
- C5:第3个卷积层
- F6:第1个全连接层
- F7:第2个全连接层
- 使用pytorch搭建LeNet
- 1. 创建一个类并继承nn.Module
- 2. 类中实现两个方法
LeNet简介
LeNet原文地址:https://ieeexplore.ieee.org/abstract/document/726791
LeNet可以说是卷积神经网络的“HelloWorld”,它通过巧妙的设计,利用卷积、池化等操作提取特征,再使用全连接神经网络进行分类。Lenet是一个 7 层的神经网络(不包含输入层),包含 3 个卷积层,2 个池化层,2 个全连接层。它的网络结构图如下所示:
LeNet7层结构
第0层:输入
输入的原始图像大小是32×32像素的3通道图像。
C1:第一个卷积层
C1是一个卷积层,卷积核大小为5,输入大小为3X32X32,输出特征图大小为16X28X28。
torch.nn.Conv2d()的参数解释如下:
- in_channels (int) – Number of channels in the input image
- out_channels (int) – Number of channels produced by the convolution
- kernel_size (int or tuple) – Size of the convolving kernel
- stride (int or tuple, optional) – Stride of the convolution. Default: 1
- padding (int, tuple or str, optional) – Padding added to all four sides of the input. Default: 0
- padding_mode (string, optional) – ‘zeros’, ‘reflect’, ‘replicate’ or ‘circular’. Default: ‘zeros’
- dilation (int or tuple, optional) – Spacing between kernel elements. Default: 1
- groups (int, optional) – Number of blocked connections from input channels to output channels. Default: 1
- bias (bool, optional) – If True, adds a learnable bias to the output. Default: True
经过卷积后的输出大小计算为下:
S2:第一个下采样层
S2是一个池化层,kernel_size为2,stride为2,输入大小为16X28X28,输出特征图大小为16X14X14。
torch.nn.MaxPool2d的参数解释如下:
- kernel_size – the size of the window to take a max over
- stride – the stride of the window. Default value is kernel_size
- padding – implicit zero padding to be added on both sides
- dilation – a parameter that controls the stride of elements in the window
- return_indices – if True, will return the max indices along with the outputs. Useful for torch.nn.MaxUnpool2d later
- ceil_mode – when True, will use ceil instead of floor to compute the output shape
经过池化后的输出大小计算为下:
C3:第2个卷积层
C3是一个卷积层,卷积核大小为5,输入大小为16X14X14,输出特征图大小为32X10X10。
S4:第2个下采样层
S4是一个池化层,kernel_size为2,stride为2,输入大小为32X10X10,输出特征图大小为32X5X5。
C5:第3个卷积层
C5是一个卷积层,卷积核大小为5,输入大小为32X5X5,输出特征图大小为120X1X1。
此处用全连接层代替
F6:第1个全连接层
F6是一个全连接层,输入大小为120,输出特征图大小为84。
F7:第2个全连接层
F7是一个全连接层,输入大小为84,输出特征图大小为10(表示有10种类别)。
使用pytorch搭建LeNet
搭建一个网络模型,最少需要分两步进行
1. 创建一个类并继承nn.Module
2. 类中实现两个方法
LeNet网络结构pytorch实现:
打印LeNet结构如下: