当前位置: 首页 > news >正文

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

卷积神经网络无法绕开的大神——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 nnclass 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 xclass LeNet(nn.Module):def __init__(self):super().__init__()# 1, 特征抽取部分self.feature_extractor = nn.Sequential(# 卷积层1ConvBlock(in_channels=1, out_channels=6, kernel_size=5,stride=1,padding=0),# 亚采样(池化)nn.MaxPool2d(kernel_size=2, stride=2, padding=0),# 卷积层2ConvBlock(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 xif __name__ == "__main__":model = LeNet()print(model)x = torch.randn(1, 1, 32, 32)y = model(x)print(y.shape)
http://www.lryc.cn/news/408680.html

相关文章:

  • 【区块链】JavaScript连接web3钱包,实现测试网络中的 Sepolia ETH余额查询、转账功能
  • 关于珞石机器人二次开发SDK的posture函数的算法RX RY RZ纠正 C#
  • 【Three.js基础学习】17.imported-models
  • Spring Bean - xml 配置文件创建对象
  • uniapp map组件自定义markers标记点
  • Windows:批处理脚本学习
  • Dav_笔记10:Using SQL Plan Management之4
  • 通过json传递请求参数,如何处理动态参数和接口依赖
  • [240727] Qt Creator 14 发布 | AMD 推迟 Ryzen 9000芯片发布
  • PLSQL Developer工具查询数据,报错(动态性能表不可访问)
  • 基于 HTML+ECharts 实现智慧交通数据可视化大屏(含源码)
  • 探索 IT 领域的新宠儿:量子计算
  • TSPNet代码分析
  • Ubuntu上安装anaconda创建虚拟环境(各种踩坑版)
  • DC-5靶机通关
  • AI学习记录 -使用react开发一个网页,对接chatgpt接口,附带一些英语的学习prompt
  • MongoDB多数据源配置与切换
  • Mongodb入门介绍
  • docker前端部署
  • 指标体系建设的方法论
  • 乐鑫ESP32-H2设备联网芯片,集成多种安全功能方案,启明云端乐鑫代理商
  • C++调用Java接口
  • C# datetimePicker
  • AI有关的学习和python
  • 前端node.js入门
  • 无需标注的数据集
  • C# 抽象工厂模式
  • java中 两个不同类对象list,属性一样,如何copy
  • 文件上传总结
  • 网页突然被恶意跳转或无法打开?DNS污染怎么解决?