经典的神经网络#1 Lenet

经典的神经网络#1 Lenet

关注B站查看更多手把手教学:

肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com)

网络结构介绍

LeNet的论文地址为:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf。这篇论文名为《Gradient-Based Learning Applied to Document Recognition》,是Yann LeCun等人在1998年发表的,介绍了LeNet-5卷积神经网络,该网络主要用于手写数字识别。

image-20240311135929400

LeNet是由Yann LeCun等人在1998年提出的一种经典的卷积神经网络(Convolutional Neural Network, CNN)架构,最初被设计用于识别手写数字和打印字符等任务。LeNet是深度学习领域最早的卷积神经网络之一,也是现代CNN架构的重要先驱之一。

LeNet的网络结构相对较小,但包含了卷积层、池化层和全连接层等基本组件,这些组件也是现代CNN架构的核心部分。具体来说,LeNet包含两个卷积层、两个池化层和三个全连接层(包括输出层),其中每个卷积层后面都跟着一个池化层。卷积层用于提取输入图像的特征,池化层则用于降低数据的维度和减少计算量,同时保留重要的特征信息。全连接层则用于将前面提取到的特征进行整合和分类。

在LeNet中,输入图像首先经过第一个卷积层,该层包含6个卷积核,大小为5x5,步长为1。卷积操作后,得到6个特征图(feature map),每个特征图都包含了输入图像的不同特征信息。接着,这些特征图经过一个2x2的池化层进行下采样,以减少数据的维度和计算量。然后,再经过一个卷积层和池化层的组合,得到更多的特征图。最后,这些特征图被展平并输入到三个全连接层中,以进行分类和识别。

LeNet的一个重要特点是使用了局部连接和权值共享的策略,这大大减少了网络中的参数数量,降低了过拟合的风险,并提高了模型的泛化能力。此外,LeNet还采用了Sigmoid激活函数和均方误差损失函数等常见的神经网络组件和技巧。

总的来说,LeNet是一种经典的卷积神经网络架构,具有简单、高效和易于实现等优点。虽然在现代深度学习应用中,LeNet的性能可能已经被更先进的模型所超越,但它仍然具有重要的历史意义和学术价值,被广泛应用于计算机视觉、图像处理和自然语言处理等领域。同时,LeNet也为后来的卷积神经网络设计提供了重要的思路和启示。

Pytorch实现

在PyTorch中实现LeNet-5架构是相对简单的。以下是一个基本的LeNet-5模型的PyTorch实现示例:

import torch  
import torch.nn as nn  
import torch.nn.functional as F  
  
class LeNet(nn.Module):  
    def __init__(self, num_classes=10):  
        super(LeNet, self).__init__()  
        # Convolution (In LeNet-5, 32x32 images are given as input. Hence padding of 2 is done below)  
        self.conv1 = nn.Conv2d(1, 6, 5, padding=2)  
        self.conv2 = nn.Conv2d(6, 16, 5)  
        # Fully connected layers  
        self.fc1 = nn.Linear(16*5*5, 120)  
        self.fc2 = nn.Linear(120, 84)  
        self.fc3 = nn.Linear(84, num_classes)  
  
    def forward(self, x):  
        # Convolution with ReLU activation  
        x = F.relu(self.conv1(x))  
        # Max pooling over 2x2 grid  
        x = F.max_pool2d(x, 2)  
  
        x = F.relu(self.conv2(x))  
        x = F.max_pool2d(x, 2)  
  
        # Flatten the tensor  
        x = x.view(x.size(0), -1)  
  
        x = F.relu(self.fc1(x))  
        x = F.relu(self.fc2(x))  
        x = self.fc3(x)  
  
        return x  
  
# Instantiate the model  
model = LeNet(num_classes=10)  
  
# Print the model architecture  
print(model)

请注意,原始的LeNet-5是为32x32像素的输入图像设计的,并且假设输入是单通道的(例如灰度图像)。上面的代码遵循了这一设计,并使用了两个卷积层,每个卷积层后面都跟着一个ReLU激活函数和一个2x2的最大池化层。然后,特征图被展平,并通过三个全连接层进行分类。

然而,你可能需要根据你的具体任务和数据集来调整网络架构,比如输入图像的大小、通道数以及最后的分类类别数。

如果你处理的是彩色图像(例如RGB图像),你需要将输入通道数从1改为3:

self.conv1 = nn.Conv2d(3, 6, 5, padding=2)

同样,如果你的输入图像大小不是32x32,你可能需要调整卷积层和池化层的参数,以及全连接层的输入尺寸,以确保维度匹配。

最后,num_classes参数应该根据你的数据集中类别的数量来设置。在上面的例子中,它被设置为10,适合用于像MNIST这样的手写数字分类任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/449458.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gitlab CICD 下载artifacts文件并用allure打开,或bat文件打开

allure命令行打开aritfacts报告 首先下载allure.zip,并解压 配置环境变量 使用命令行打开allure文件夹 allure open 2024-03-11-14-54-40 2024-03-11-14-54-40 包含index.html Bat文件打开artifacts There are 2 html reports in the download artifacts.zip S…

SpringMVC | SpringMVC中的 “数据绑定”

目录: “数据绑定” 介绍1.简单数据绑定 :绑定 “默认数据” 类型绑定 “简单数据类型” 类型 (绑定Java“基本数据类型”)绑定 “POJO类型”绑定 “包装 POJO”“自定义数据” 绑定 :Converter (自定义转换器) 作者简介 :一只大皮卡丘&#…

数组名结合指针的面试题的讲解

笔试题 第一题: 已知条件: 已知p为结构体指针变量,值为0x100000,并且结构体的大小为20字节,并且打印格式均为%p,%p不会在乎正负数,它会以补码的形式直接打印,0x1为16进制的1。 第一问…

java使用anyMatch判断自定义值是否在HashMap数组中

java使用anyMatch判断自定义值是否在HashMap数组中 一、代码 一、代码 Testvoid test() {List<Map<String, Object>> list new ArrayList<>();Map<String, Object> map1 new HashMap<>();map1.put("key1", "value1");map1…

文献阅读笔记:全卷积神经网络

文献阅读笔记&#xff1a;全卷积神经网络 摘要Abstract1. 全卷积神经网络1.1 文献摘要1.2 全卷积神经网络1.2.1 网络结构1.2.0 从分类器到密集 FCN1.2.2 上采样 Upsampling1.2.3 跳级结构1.2.4 FCN训练 1.3 实验1.4 总结 2. 代码实现 摘要 本周学习了全卷积神经网络&#xff0…

嵌入式面经-ARM体系架构-计算机基础

嵌入式系统分层 操作系统的作用&#xff1a;向下管理硬件&#xff0c;向上提供接口&#xff08;API&#xff09; 应用开发&#xff1a;使用操作系统提供的接口&#xff08;API&#xff09;&#xff0c;做上层的应用程序开发&#xff0c;基本不用去关内核操作硬件是怎么实现的 …

数字电子技术笔记——组合逻辑功能

1.Adder&#xff08;加法器&#xff09; Half-Adder&#xff08;半加器&#xff09; Full-Adder&#xff08;全加器&#xff09; 74LS283(4-bit parallel adders) carry look-ahead adder &#xff08;超前进位加法器&#xff09; 2.Comparator&#xff08;比较器&#xff09;…

hadoop报错:HADOOP_HOME and hadoop.home.dir are unset. 解决方法

参考&#xff1a;https://blog.csdn.net/weixin_45735242/article/details/120579387 解决方法 1.下载apache-hadoop-3.1.0-winutils-master 官网下载地址&#xff1a; https://github.com/s911415/apache-hadoop-3.1.0-winutils win配置系统环境&#xff1a; 然后重启idea…

【golang】28、用 httptest 做 web server 的 controller 的单测

文章目录 一、构建 HTTP server1.1 model.go1.2 server.go1.3 curl 验证 server 功能1.3.1 新建1.3.2 查询1.3.3 更新1.3.4 删除 二、httptest 测试2.1 完整示例2.2 实现逻辑2.3 其他示例2.4 用 TestMain 避免重复的测试代码2.5 gin 框架的 httptest 一、构建 HTTP server 1.1…

[密码学]Base64编码

一、相关指令 1. 查看工具版本号 base64 --version2. 对字符串加密 echo 字符串 | base64 echo "Hello base64" | base643. 对字符串解密 echo 字符串 |base64 -d echo "SGVsbG8gTGV0aWFuLVJTQQo" | base64 -d4. 对文件加密 base64 文件名 base64 tex…

Linux Centos系统 磁盘分区和文件系统管理 (深入理解)

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; 前言———— 磁盘 在Linux系统中&#xff0c;磁盘是一种用于存储数据的物理设备&#xff0c;可以是传统的硬盘驱动器&am…

个人商城系统开源(配置支付宝支付!)

原文地址&#xff1a;个人商城系统开源&#xff08;配置支付宝支付&#xff01;&#xff09; - Pleasure的博客 下面是正文内容&#xff1a; 前言 由于近期实在没有什么话题可写和一些有趣的项目教程可以分享。所以我只能决定将我自己亲手编写的一个迷你迷你商城系统进行开源…

HYBBS 表白墙网站PHP程序源码,支持封装成APP

PHP表白墙网站源码&#xff0c;适用于校园内或校区间使用&#xff0c;同时支持封装成APP。告别使用QQ空间的表白墙。 简单安装&#xff0c;只需PHP版本5.6以上即可。 通过上传程序进行安装&#xff0c;并设置账号密码&#xff0c;登录后台后切换模板&#xff0c;适配手机和PC…

软考 系统架构设计师之回归及知识点回顾(6)

接前一篇文章&#xff1a;软考 系统架构设计师之回归及知识点回顾&#xff08;5&#xff09; 10. 边缘计算 边云协同 边缘计算与云计算各有所长&#xff0c;云计算擅长全局性、非实时、长周期的大数据处理与分析&#xff0c;能够在长周期维护、业务决策支撑等领域发挥优势&…

【汇编】#4 8086与转移地址有关有关的寻址方式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、CS与IP功能tips&#xff1a;CS、IP复位值 二、修改CS与IP的指令1. jmp指令 三、与转移地址有关的寻址方式1、段内转移1.1 段内直接寻址1.2 段内间接寻址 2. 段间…

RK3588-PCIe

1. 简介 PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;是一种用于连接主板和外部设备的高速串行接口标准。它是 PCI 技术的后继者&#xff0c;旨在提供更高的带宽和更好的性能。 高速传输&#xff1a; PCIe接口提供了高速的数据传输通道&#xff0…

AHU 汇编 实验四

实验名称&#xff1a;实验四 两个数的相乘 实验内容&#xff1a; 用子程序形式编写&#xff1a; A*B&#xff1a;从键盘输入a和b&#xff0c;计算A*B&#xff0c;其中乘法采用移位和累加完成 实验过程&#xff1a; 源代码&#xff1a; data segmentmul1 db 16,?,16 dup(?…

Jenkins cron定时构建触发器

from&#xff1a; https://www.jenkins.io/doc/book/pipeline/syntax/#cron-syntax 以下内容为根据Jenkins官方文档cron表达式部分翻译过来&#xff0c;使用机翻加个人理解补充内容&#xff0c;包括举例。 目录 介绍举例&#xff1a;设置方法方法一&#xff1a;方法二&#xf…

web | http 的一些问题 | get/post的区别 | http版本 | http与https的区别 | session、cookie、token

怎么来说呢&#xff1f;这应该算一个大类了&#xff0c;基本上设计网络的应用层 当然重要的是从网络层----->应用层 &#xff08;杠精勿杠&#xff0c;知道中间还有其他层&#xff09; 先来讲一下http的结构 都知道http 有三部分&#xff0c;头部、请求头和body 头部&#x…

SQLiteC/C++接口简介

上一篇&#xff1a;SQLite——世界上部署最广泛的开源数据库&#xff08;简介&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍&#xff08;一&#xff09; 引言&#xff1a; 作为一种轻量级、嵌入式关系型数据库&#xff0c;SQLite已经成为许多应用和系统的首选解决方…