CNN网络经典之作-LeNet5详解

LeNet5是1998年由Yann LeCun提出的一种早期卷积神经网络,主要用于手写数字识别。它由8层构成,包括输入层、三个卷积层、两个池化层、一个全连接层及输出层。LeNet5采用特定的卷积核和池化策略,有效降低了参数数量,同时提高了识别精度。

LeNet5 介绍

LeNet通常就指LeNet5,该网络诞生于1998年,作者是Yann LeCun,当初被设计用来识别手写数字,是最早的CNN网络之一,被后续学者奉为经典,该论文的下载地址 http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=054E02BBBFEFE6B1C98D119DC503F6A7?doi=10.1.1.42.7665&rep=rep1&type=pdf

在加拿大瑞尔森大学的官网上,有一个LeNet手写数字识别的3D可视化模型,想要了解LeNet的同学们,可以先到这个网站上体验一下,对理解LeNet会有很大的帮助,网址 https://www.cs.ryerson.ca/~aharley/vis/conv/

 

网络结构

论文中的网络结构图如下:

 

包含输入输出层,LeNet-5 一共有8层网络,分为

Input 输入层、C1 卷积层、S2 下采样池化层、C3 卷积层、S4 下采样卷积层、C5 卷积层、F6 全连接层、Output 输出层。

Input 输入层

LeNet-5 输入图像为单通道的32x32大小的手写数字图像。

 

C1 卷积层

卷积层是用作特征提取的图层,C1 卷积层这里使用了6个5x5大小的卷积核,卷积步长为1。该层接收输入层传入的32x32大小的单通道图像,输出为6个特征平面,每个特征面的尺寸为28x28大小(32-5+1)。

连接数为 (5x5+1)x28x28x6 = 122304个。

权值数为6个卷积核的权值参数,每个卷积核有5x5个权值+1个偏移量,共有(5x5+1)x6 = 156个。

 

 

 

S2 池化层

池化层就是下采样层,用来降低数据的维度,一般在CNN(卷积神经网络)中,一组卷积操作之后会接一个池化层。卷积层提取完特征后相当于对数据进行一次抽象,数据量可以进行一次压缩。

池化层一般有 最大值池化、平均值池化两种,LeNet5网络当初使用的是平均池化,后来人们发现最大值池化效果更好一下,目前使用LeNet5网络的时候很多都会改用最大值池化。

该池化层输入为6个28x28的特征图,对每个特征图分别进行2x2大小的窗口进行下采样,下采样后每个特征图的尺寸长宽各缩小一半,变为14x14,即输出为6个14x14大小的特征图。

 

C3 卷积层

该卷积层有16个特征平面,输入6个14x14大小的特征图,输出为16个10x10大小的特征平面(14-5+1=10)。

不同于C2层,该层的特征平面和上一层的池化层并不是每一个特征平面都与所有的上层特征平面相连,连接关系矩阵如下所示:

 

前6个特征平面只中每一个平面只与上层6个平面中的3个相连,第7-15层每层与4个相连,只有最后一个特征平面才与上层所有特征面相连。这么设计的目的论文中有讲到,主要是为了打破对称性,提取深层特征,因为特征不是对称的,因此需要打破这种对称,以提取到更重要的特征。

连接数,前6个 特征平面 (5x5x3+1)x10x10x6=45600,第7-15个为 (5x5x4+1)x10x10x9=90900,最后一个 (5x5x6+1)x10x10x1=15100,总个数为 151600个。

权值数,(5x5x3+1)x6 + (5x5x4+1)x9 + (5x5x6+1)x1 = 1516个。

S4 池化层

输入为16个10x10大小的特征平面

输出为16个5x5大小的特征平面

C5 卷积层

这是一个比较特殊的卷积层,特殊之处在于卷积核大小刚好等于输入特征图的大小,都是5x5的尺寸,导致该卷积层的输出为1x1大小的特征图。该卷积层使用了120个卷积核,输出为120个1x1大小的特征图。

 

该层的连接数为 (5x5x16+1)x120=48120个,权值也是这么多个。

F6 全连接层

有84个神经元大小的全连接层,相当于BP网络的隐藏层,连接个数与权值数都为(120+1)x84=10164个。

参考文章

https://blog.youkuaiyun.com/weixin_42398658/article/details/84392845

https://blog.youkuaiyun.com/u013963380/article/details/93316111

### 经典CNN模型 LeNet 的实现与原理 #### 1. LeNet-5 网络结构概述 LeNet 是一种早期的经典卷积神经网络 (Convolutional Neural Network, CNN),最初由 Yann LeCun 提出并用于解决手写字符识别问题。它首次引入了卷积层和池化层的概念,显著提高了图像分类任务中的性能[^2]。 LeNet-5 主要分为两大部分:特征提取部分和分类器部分。 - **特征提取部分** 使用交替的卷积层和子采样层来捕获输入图像的空间层次特征。 - **分类器部分** 则通过全连接层完成最终的类别预测。 具体来说,LeNet-5 的主要模块包括以下几个阶段: - 输入层:接受单通道灰度图像作为输入。 - 卷积层:负责提取局部特征。 - 池化层(Subsampling Layer):降低特征图尺寸以减少计算量。 - 全连接层:将前面提取到的特征映射到目标类别的概率分布上。 #### 2. LeNet-5 参数详解 以下是 LeNet-5 中各层的具体配置: | 层名称 | 类型 | 输出大小 | 描述 | |--------------|-------------|---------------|----------------------------------------------------------------------| | Input | 输入层 | \(32 \times 32\) | 接收 \(32 \times 32\) 像素的灰度图片 | | C1 | 卷积层 | \(28 \times 28 \times 6\) | 进行 \(5 \times 5\) 卷积操作,生成 6 个特征图 | | S2 | 子采样层 | \(14 \times 14 \times 6\) | 对 C1 特征图进行平均池化 | | C3 | 卷积层 | \(10 \times 10 \times 16\) | 应用 \(5 \times 5\) 卷积核,得到 16 个更复杂的特征 | | S4 | 子采样层 | \(5 \times 5 \times 16\) | 再次执行池化操作 | | C5 | 卷积层 | \(1 \times 1 \times 120\) | 将前一层输出展平为向量 | | F6 | 全连接层 | \(84\) | 映射高维空间 | | Output | Softmax 输出 | \(10\) | 预测属于某个数字的概率 | 这些层共同构成了一个完整的端到端训练框架,能够高效处理 MNIST 数据集上的手写数字分类任务[^1]。 #### 3. PyTorch 实现代码示例 下面是一个基于 PyTorch 的 LeNet-5 实现代码片段: ```python import torch.nn as nn import torch.nn.functional as F class LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__() # 定义卷积层 self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5) self.conv2 = nn.Conv2d(in_channels=6, out_channels=16, kernel_size=5) # 定义全连接层 self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): # 卷积 -> ReLU激活 -> 池化 x = F.relu(self.conv1(x)) x = F.max_pool2d(x, 2) x = F.relu(self.conv2(x)) x = F.max_pool2d(x, 2) # 展平 x = x.view(-1, 16 * 5 * 5) # 全连接层 -> ReLU激活 x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) # 输出层 x = self.fc3(x) return x ``` 上述代码定义了一个标准的 LeNet-5 架构,并支持扩展至其他类似的简单图像分类场景。 --- ####
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ango_Cango

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值