LeNet 神经网络
文章目录
- 1. LeNet 简介
- 2. LeNet 的 PyTorch 实现
1. LeNet 简介
LeNet 原是 LeNet1 - LeNet5 这系列网络的合称,但现在所说的 LeNet 则一般特指 LeNet5 (后文统一称为 LeNet)。LeNet 是 Yann LeCun 教授于 1998 年在论文《Gradient-Based Learning Applied to Document Recognition》中提出的 ,设计之初只是用于手写数字的识别,到如今已成为卷积神经网络的 HelloWorld。受限于计算机的算力不足,加之支持向量机 (核学习方法) 的兴起,CNN 方法并未成为当时学术界认可的主流方法。
算上输入层的话,LeNet 共有 8 层,包含 3 个卷积层,2 个池化层 (下采样层) 和 1 个全连接层。其中,所有卷积操作的核都固定为 5x5,步长为 1;统一使用全局平均池化。LeNet 的网络结构如下
- 输入层:输入图像的尺寸为 32X32;
- C1 层 (卷积层):使用 6 个核大小为 5×5 的卷积,得到 6 张 28×28 的特征图;
- S2 层 (池化层,即下采样层):使用 6 个 2×2 的平均池化,得到 6 张 14×14 的特征图;
- C3 层 (卷积层):使用 16 个核大小为 5×5 的卷积,得到 16 张 10×10 的特征图;
- S4 层 (池化层):使用 16 个 2×2 的平均池化,得到 16 张 5×5 的特征图;
- C5 层 (卷积层):使用 120 个核大小为 5×5 的卷积,得到 120 张 1×1 的特征图 (一个向量);
- F6 层 (全连接层):含 84 个节点的全连接层,对应于一个 7x12 的比特图;
- 输出层:含 10 个节点的全连接层,分别代表数字 0 到 9。
2. LeNet 的 PyTorch 实现
# _*_coding:utf-8_*_
import torch
import torch.nn as nn
import torch.nn.functional as Fclass LeNet5(nn.Module):def __init__(self, in_channels, out_channels):super(LeNet5, self).__init__()# 卷积神经网络self.features = nn.Sequential(nn.Conv2d(in_channels, 6, kernel_size=5),nn.MaxPool2d(kernel_size=2),nn.Conv2d(6, 16, kernel_size=5),nn.MaxPool2d(kernel_size=2) # 原模型使用的是平均池化)# 分类器self.classifier = nn.Sequential(nn.Linear(16 * 5 * 5, 120 * 1 * 1), # 这里将第三个卷积层看成是全连接层nn.Linear(120, 84),nn.Linear(84, out_channels))def forward(self, x):x = self.features(x)x = torch.flatten(x, 1) # 铺平tensorx = self.classifier(x)out = F.softmax(x, 1) # 激活函数return outif __name__ == "__main__":batch_size = 1in_channels = 1out_channels = 10inputs = torch.rand((batch_size, in_channels, 32, 32)) # (B, C, H, W)lenet = LeNet5(in_channels, out_channels)outputs = lenet(inputs)print(outputs)print(outputs.sum())print(outputs.max())print(torch.argmax(outputs, 1))
【参考】
- 卷积神经网络之Lenet;
- CNN发展简史——LeNet(一);
- pytorch LeNet 模型;
LeNet 神经网络相关推荐
- Lenet神经网络实现
手写字体识别模型LeNet5诞生于1994年,是最早的卷积神经网络之一.LeNet5通过巧妙的设计,利用卷积.参数共享.池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别, ...
- c语言实现图片卷积_卷积神经网络(CNN)Python的底层实现——以LeNet为例
本文介绍了如何使用Python从底层实现一个简单但经典的卷积神经网络结构--LeNet,并用它完成MNIST手写数字识别任务. 具体的完整代码以及代码的使用方法,可以光顾我的Github Profes ...
- [人工智能-深度学习-33]:卷积神经网络CNN - 常见分类网络- LeNet网络结构分析与详解
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...
- Tensorflow系列 | TensorFlow 实战卷积神经网络之 LeNet
编译 | fendouai 编辑 | 安可 [导读]:前几篇文章中我们介绍了一些机器学习.深度学习入门资源项目合集,本篇则是对继五大卷积神经网络原理介绍之后的实战延续,同样来自fendouai老师.下 ...
- NNDL 实验六 卷积神经网络(3)LeNet实现MNIST 手动算子部分
手写体数字识别是计算机视觉中最常用的图像分类任务,让计算机识别出给定图片中的手写体数字(0-9共10个数字).由于手写体风格差异很大,因此手写体数字识别是具有一定难度的任务. 我们采用常用的手写数字识 ...
- 利用LeNet识别十种动物和水果
简 介: ※利用经典的LeNet深度学习网络,可以完成对于智能车竞赛中智能视觉组对搬运物品分类的要求.虽然实际比赛中还会包含有五种交通工具,那么利用LeNet仍然是可以完成小类别的识别与定位的.仅仅使 ...
- [Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
文章目录 1. 使用 LeNet 预测 1.1 导入包 1.2 建立 LeNet 模型 1.3 读入数据 1.4 定义模型 1.5 训练 1.6 绘制训练曲线 1.7 预测提交 2. 使用 VGG16 ...
- TensorFlow神经网络(八)卷积神经网络之Lenet-5
一.Lenet神经网络基本结构 [注]内容来自MOOC人工智能实践TensorFlow笔记课程第七讲第2课 注意,最后将第二池化层后的输出拉直送入全连接层. Lenet神经网络特点: ① 卷积.池化. ...
- [Pytorch系列-35]:卷积神经网络 - 搭建LeNet-5网络与CFAR10分类数据集
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...
最新文章
- Linux如何实现断点续传文件功能?
- 我们从2021谷歌I/O大会给的谜题中发现了隐藏信息
- Python 开发面试题
- UVa 11100 旅行2007
- 免费指纹浏览器破解方法之开源代码
- wuhan2020新型冠状病毒防疫信息收集平台社区版非正式发布
- Asp.Net Core使用Skywalking实现分布式链路追踪
- 安装开源 ITIL 门户 iTOP
- idea连接sqlserver及数据库操作
- 解决虚拟机在能ping通网关情况下出现From 192.168.1.10: icmp_seq=1 Redirect Network(New nexthop: 192.168.1.1)问题
- Gradle Builds Everthing —— 产物输出
- 韩语在线翻译图片识别_Text Scanner for Mac(ocr文字识别工具)
- 获取选股宝7x24小时数据
- Unix Domain Sockets
- qq安装路径无效Linux,QQ提示安装路径无效您没有权限的两种解决办法
- 用 Python 轻松将懂车帝视频转换为文本
- 计算机中rom,计算机中rom指的是内存还是外存
- thinkphp引入阿里云视频点播
- (灵魂拷问)MySQL数据库高频面试题,助你脱颖而出
- 视频监控存储特点分析