LeNet

Convolutional Neural Networks

使用全连接层的局限性:

  1. 图像在同一列邻近的像素在这个向量中可能相距较远。它们构成的模式可能难以被模型识别。
  2. 对于大尺寸的输入图像,使用全连接层容易导致模型过大。

使用卷积层的优势:

  1. 卷积层保留输入形状。
  2. 卷积层通过滑动窗口将同一卷积核与不同位置的输入重复计算,从而避免参数尺寸过大。

LeNet 模型

LeNet分为卷积层块全连接层块两个部分。下面我们分别介绍这两个模块。

卷积层块里的基本单位是卷积层后接平均池化层:卷积层用来识别图像里的空间模式,如线条和物体局部,之后的平均池化层则用来降低卷积层对位置的敏感性。

卷积层块由两个这样的基本单位重复堆叠构成。在卷积层块中,每个卷积层都使用5*5的窗口,并在输出上使用sigmoid激活函数。第一个卷积层输出通道数为6,第二个卷积层输出通道数则增加到16。

全连接层块含3个全连接层。它们的输出个数分别是120、84和10,其中10为输出的类别个数。

### LeNet神经网络概述 LeNet 是一种早期的卷积神经网络架构,在手写字符识别方面取得了显著的成功[^1]。该模型由 Yann LeCun 及其同事于 1998 年首次提出,最初设计用于解决邮政编码中的数字分类问题。 #### 架构特点 LeNet 的典型结构包括两个主要部分: - **特征提取层**:包含多层卷积操作和池化操作交替排列,负责自动学习输入图像的空间层次特征。 - **全连接分类器**:位于最后几层,接收来自前面各层抽取到的高级语义信息作为输入,并输出最终预测结果。 具体来说,原始版本的 LeNet 主要由以下几个组件构成: - 输入层接受灰度图片; - 卷积层通过滤波器扫描整个图像区域来检测局部模式; - 下采样层(也称为子抽样或最大池化)减少参数数量并增强平移不变性; - 多个这样的组合之后接上一层或多层全连接单元完成类别判定任务。 ```python import torch.nn as nn class LeNet(nn.Module): def __init__(self, num_classes=10): super(LeNet, self).__init__() self.features = nn.Sequential( nn.Conv2d(1, 6, kernel_size=5), nn.ReLU(), nn.MaxPool2d(kernel_size=2), nn.Conv2d(6, 16, kernel_size=5), nn.ReLU(), nn.MaxPool2d(kernel_size=2) ) self.classifier = nn.Sequential( nn.Linear(16 * 4 * 4, 120), nn.ReLU(), nn.Linear(120, 84), nn.ReLU(), nn.Linear(84, num_classes) ) def forward(self, x): x = self.features(x) x = x.view(-1, 16 * 4 * 4) x = self.classifier(x) return x ``` #### 发展历史 自诞生以来,LeNet 不仅推动了计算机视觉领域的发展,还启发了许多后续更复杂的 CNN 结构的设计思路。尽管现代深度学习框架已经能够支持更大规模的数据集训练以及更加高效的计算方式,但是 LeNet 所奠定的基础理论和技术仍然被广泛应用于当今的各种实际应用当中。 #### 应用场景 由于其简单而有效的特性,LeNet 特别适合处理小型至中型尺寸的手写字体或者物体轮廓清晰的目标检测等问题。除了最初的 MNIST 数据集上的表现外,它也可以扩展应用于其他类似的二值化图形识别场合,比如验证码解析、车牌号码读取等[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值