2. 卷积神经网络无法绕开的神——LeNet
创始人
2024-12-14 16:35:34

卷积神经网络无法绕开的大神——LeNet

  • 1. 基本架构
  • 2. LeNet 5
  • 3. LeNet 5 代码

1. 基本架构

在这里插入图片描述

  • 特征抽取模块
  • 可学习的分类器模块

2. LeNet 5

在这里插入图片描述

  • LeNet 5: 5 表示的是5个核心层,2个卷积层,3个全连接层.
  • 核心权重层:卷积层、全连接层、循环层,Batchnorm / Dropout 这些都属于附属层。
  • Convolutions, 32×32 → 28×28:卷积过后,图像像素损失了4个,是因为 kernal_size是5×5. 那个年代是不补零的。
  • Subsampling: 亚采样,也叫池化层,池化一次,图像大小缩小一般,层数不变。
  • 卷积负责把图像层数变得越来越多,池化负责把图像变得越来越小。最后使用全连接,输出类别。

3. LeNet 5 代码

import torch from torch import nn   class ConvBlock(nn.Module):     """         一层卷积:             - 卷积层             - 批规范化层             - 激活层     """     def __init__(self, in_channels, out_channels,                   kernel_size=3, stride=1, padding=1):         super().__init__()         self.conv = nn.Conv2d(in_channels=in_channels, out_channels=out_channels,                              kernel_size=kernel_size, stride=stride,padding=padding)         self.bn = nn.BatchNorm2d(num_features=out_channels)         self.relu = nn.ReLU()          def forward(self, x):         x = self.conv(x)         x = self.bn(x)         x = self.relu(x)         return x  class LeNet(nn.Module):     def __init__(self):         super().__init__()         # 1, 特征抽取部分         self.feature_extractor = nn.Sequential(             # 卷积层1             ConvBlock(in_channels=1,                        out_channels=6,                        kernel_size=5,                       stride=1,                       padding=0),                          # 亚采样(池化)             nn.MaxPool2d(kernel_size=2, stride=2, padding=0),                          # 卷积层2             ConvBlock(in_channels=6,                        out_channels=16,                        kernel_size=5,                       stride=1,                       padding=0),                          # 亚采样(池化)             nn.MaxPool2d(kernel_size=2, stride=2, padding=0),                      )                  # 2, 分类         self.classifier = nn.Sequential(             nn.Flatten(),             nn.Linear(in_features=400, out_features=120),             nn.ReLU(),             nn.Linear(in_features=120, out_features=84),             nn.ReLU(),             nn.Linear(in_features=84, out_features=10)         )              def forward(self, x):         # 1, 提取特征         x = self.feature_extractor(x)         # 2, 分类输出         x = self.classifier(x)         return x       if __name__ == "__main__":     model = LeNet()     print(model)     x = torch.randn(1, 1, 32, 32)     y = model(x)     print(y.shape) 

相关内容

热门资讯

上海移动宣布5G-A超级上行网... 来源:滚动播报 (来源:上观新闻) 采访对象提供 5月17日,“智能加码 科创申城” 中国移动上海...
英伟达CEO黄仁勋痛斥将GPU... IT之家 5 月 17 日消息,英伟达首席执行官黄仁勋受邀担任斯坦福大学《前沿系统》CS 153 课...
2026年高性价比机型封神榜:... 2026 年手机市场机型繁杂,多数用户都面临相同的选购困境:千元预算想选高性价比手机,怕续航拉垮、用...
江苏辛巴新材料取得零碳风光互补... 国家知识产权局信息显示,江苏辛巴新材料科技股份有限公司取得一项名为“一种零碳风光互补装置”的专利,授...
全钢实验台厂家梳理 医疗/科研... 导语:实验室设备选型需兼顾功能适配性与长期稳定性。基于2026年实验室建设行业白皮书及公开市场数据,...