【Pytorch深度学习开发实践学习】Pytorch实现LeNet神经网络(1)

news2024/11/21 0:37:55

1.model.py

import torch.nn as nn
import torch.nn.functional as F

引入pytorch的两个模块
关于这两个模块的作用,可以参考下面
Pytorch官方文档
在这里插入图片描述
torch.nn包含了构成计算图的基本模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
torch,nn.function包括了计算图中的各种主要函数,包括:卷积函数、池化函数、注意力机制函数、非线性激活函数、dropout函数、线性函数、距离函数、损失函数、可视化函数和多GPU分布式函数等。

class LeNet(nn.Module):
    def __init__(self):
        super(LeNet, self).__init__()
        self.conv1 = nn.Conv2d(3, 16, 5)
        self.pool1 = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(16, 32, 5)
        self.pool2 = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(32*5*5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

我们构建了从torch.nn.Module类下面继承的LeNet类,这个类构建了LeNet神经网络,所有pytorch定义的神经网络模型都从nn.Module类派生。

首先def init(self):是类的初始化函数,当我们创建这个类的一个实例时,这个函数会被调用。

super(LeNet, self).init()是调用父类nn.Module的初始化函数,这是一个标准的做法,确保父类中的任何初始化都被正确的执行。

self.conv1 = nn.Conv2d(3, 16, 5)调用nn.function的二维卷积函数,定义了第一个卷积层的操作,输入的通道数是3,输出通道数16,5*5的卷积核

self.pool1 = nn.MaxPool2d(2, 2)调用了最大池化函数,定义了第一个池化层的操作,池化窗口的大小是2*2

self.conv2 = nn.Conv2d(16, 32, 5)定义了第二个卷积层的操作,输入通道数是16,因为第一个卷积层的输出通道数是16,这一层的输出通道数是32,5*5的卷积核

self.pool2 = nn.MaxPool2d(2, 2)调用了最大池化函数,定义了第二个池化层的操作,池化窗口的大小是2*2

self.fc1 = nn.Linear(3255, 120)定义了一个全连接层,输入特征是3255,这是前一层输出的特征数与卷积核大小、步长和填充的综合结果),输出特征数为120。

self.fc2 = nn.Linear(120, 84)定义另一个全连接层,输入特征数为120,输出特征数为84。

self.fc3 = nn.Linear(84, 10) 定义最后一个全连接层,输入特征数为84,输出特征数为10。这个输出特征数通常对应于分类问题的类别数(如果有10个类别的话)。

LeNet模型是一个经典的卷积神经网络结构,主要用于图像分类任务。它包括两个卷积层、两个池化层和三个全连接层。

    def forward(self, x):
        x = F.relu(self.conv1(x))    # input(3, 32, 32) output(16, 28, 28)
        x = self.pool1(x)            # output(16, 14, 14)
        x = F.relu(self.conv2(x))    # output(32, 10, 10)
        x = self.pool2(x)            # output(32, 5, 5)
        x = x.view(-1, 32*5*5)       # output(32*5*5)
        x = F.relu(self.fc1(x))      # output(120)
        x = F.relu(self.fc2(x))      # output(84)
        x = self.fc3(x)              # output(10)
        return x

这段代码定义了一个神经网络的前向传播过程。

def forward(self, x):
定义一个名为forward的方法,它描述了数据从输入到输出的前向传播过程。

x = F.relu(self.conv1(x))
输入数据x经过第一个卷积层self.conv1,然后通过ReLU激活函数。输入是33232,输出的大小为(16, 28, 28)。

x = self.pool1(x)
对上一步的输出进行最大池化操作,输出的大小变为(16, 14, 14)。

x = F.relu(self.conv2(x))
输入数据x经过第二个卷积层self.conv2,然后通过ReLU激活函数。输出的大小为(32, 10, 10)。

x = self.pool2(x)
对上一步的输出进行最大池化操作,输出的大小变为(32, 5, 5)。

x = x.view(-1, 3255)
对上一步的输出进行展平操作,即将三维数据变为二维数据。输出的大小为(-1, 3255),其中-1表示批量大小,可以自动计算。

x = F.relu(self.fc1(x))
对展平后的数据x进行全连接操作,然后通过ReLU激活函数。输出的大小为120

x = F.relu(self.fc2(x))
对上一步的输出进行全连接操作,然后通过ReLU激活函数。输出的大小为84

x = self.fc3(x)
对上一步的输出进行全连接操作,不使用激活函数。输出的大小为(10)。这通常表示有10个类别。

return x
返回最终的输出结果。

这个前向传播过程描述了数据从输入到输出的整个流程,包括卷积、池化、全连接和激活函数等操作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

等保2.0高风险项全解析:判定标准与应对方法

引言 所谓高风险项,就是等保测评时可以一票否决的整改项,如果不改,无论你多少分都会被定为不合格。全文共58页,写得比较细了,但是想到大家基本不会有耐心去仔细看的(凭直觉)。这几天挑里边相对…

全新抖音视频下载软件|批量视频下载工具

随着抖音平台上精彩视频的不断涌现,许多用户希望能够方便地保存自己喜欢的视频内容,以便随时观看或分享给朋友。为了满足这一需求,我们基于C#开发了一款全新的视频下载软件,为您提供便捷、高效的视频获取体验。 主要功能模块&…

Rocky Linux 运维工具 dnf

一、dnf的简介 dnf​是用于在基于RPM包管理系统的包管理工具。用户可以通过 ​yum​来搜索、安装、更新和删除软件包,自动处理依赖关系,它是yum的继任者,旨在提供更快速、更现代化的软件包管理体验。。 二、dnf 的参数说明 序号参数描述1in…

[WebUI Forge]ForgeUI的安装与使用 | 相比较于Auto1111 webui 6G显存速度提升60-75%

ForgeUI的github主页地址:https://github.com/lllyasviel/stable-diffusion-webui-forge Stable Diffusion WebUI Forge 是一个基于Stable Diffusion WebUI(基于Gradio)的平台,可简化开发、优化资源管理并加快推理速度。 “Forge”这个名字的灵感来自于“Minecraft Forge”…

kafka平滑升级过程指导

一、前言 Apache Kafka作为常用的开源分布式流媒体平台,可以实时发布、订阅、存储和处理数据流,多用于作为消息队列获取实时数据,构建对数据流的变化进行实时反应的应用程序,已被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型…

用户故事编写指南:写出最贴近用户实际场景的故事

用户故事在软件开发过程中被作为“描述需求”的一种表达形式,是定义用户想要什么的简单方法。通过它可以清楚地解释产品。一个好的用户故事能帮助利益相关者理解产品的功能,并且有助于向客户介绍产品是什么。用户故事都会写,但如何写出最贴近…

化学分子Mol2文件格式与使用注意事项

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 文章目录 前言一、Mol2文件示例二、 Mol2文件主要结构解释及注意事项MOLECULE 字段解释ATOM 字段解释BOND 字段解释SUBSTRUCTURE字段解释 总结参考资料 前言 Mol2格式文件是一个ASCII 文件,由Tripos…

istio学习记录——VirtualService详解

上一篇使用VirtualService进行了简单的流量控制,并通过Gateway将流量导入到了集群内。这一篇将更加深入的介绍 VirtualService。 k8s中有service,service能够对流量进行负载均衡,那为什么istio又引入了VirtualService呢,因为serv…

爆火的1分钟声音克隆GPT-SoVITS项目 linux系统 ubuntu22.04安装2天踩坑教程

原项目地址:https://github.com/RVC-Boss/GPT-SoVITS 1分钟素材,最后出来的效果确实不错。 1. cuda环境安装 cuda环境准备 根据项目要求在cuda11.8和12.3都测试了通过。我这里是用cuda11.8 cuda11.8安装教程: ubuntu 22.04 cuda多版本和…

《Large Language Models for Generative Information Extraction: A Survey》阅读笔录

论文地址:Large Language Models for Generative Information Extraction: A Survey 前言 映像中,比较早地使用“大模型“”进行信息抽取的一篇论文是2022年发表的《Unified Structure Generation for Universal Information Extraction》,也…

腾讯云4核8G的云服务器性能水平?使用场景说明

腾讯云4核8G服务器适合做什么?搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以,腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM,轻量服务器和标准型CVM服务器性能是差不多的,轻…

第十四天-网络爬虫基础

1.什么是爬虫 1.爬虫(又被称为网页蜘蛛,网络机器人),是按照一定规则,自动的抓取万维网中的程序或者脚本,是搜索引擎的重要组成;比如:百度、 2.爬虫应用:1.搜索引擎&…

谈谈高并发系统的设计方法论

谈谈高并发系统的设计方法论 何为高并发系统?什么是并发(Conurrent)?什么是高并发(Hight Concurrnet)?高并发的衡量指标有哪些? 实现高并发系统的两大板块高并发系统应用程序侧的设计…

Linux学习笔记11——用户组添加删除

Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。 例如,某台 Linux 服务器上有 4 个用户,分别是 root、www、ftp 和 mysql&…

编程遗产:祖传代码

在浩瀚的代码海洋中,隐藏着一段鲜为人知的遗产——祖传代码。这些代码不仅仅是冰冷的指令和逻辑,更是一代代程序员心血的结晶,充满了温情和趣味。 让我们在脑子里画一幅画,有位祖先是一位技艺高超的程序员,他们在那个…

11 Redis之高并发问题(读+写) + 缓存预热+分布式锁

8. 高并发问题 Redis做缓存虽减轻了DBMS的压力,减小了RT(Response Time),但在高并发情况下也是可能会出现各种问题的。 8.1 缓存穿透 当用户访问的数据既不在数据库中也不在缓存中,如id为“-1”的数据或id为特别大不存在的数据, 这时的用户…

单晶银粉在光伏发电和电子电气领域需求旺盛 我国市场国产化进程有望加快

单晶银粉在光伏发电和电子电气领域需求旺盛 我国市场国产化进程有望加快 单晶银粉指以单晶形式存在的银材料。与普通银粉相比,单晶银粉具有化学稳定性好、光学透过率高、导电性佳、导热性好、易于加工、纯度高等优势,在光伏发电、电子电气等领域拥有广阔…

【Python笔记-设计模式】中介者模式

一、说明 中介者模式是一种行为设计模式,减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。 (一) 解决问题 降低系统中对象之间的直接通信,将复杂的交互转化为通过中介者进行的间接交…

Django配置静态文件

Django配置静态文件 目录 Django配置静态文件静态文件配置调用方法 一般我们将html文件都放在默认templates目录下 静态文件放在static目录下 static目录大致分为 js文件夹css文件夹img文件夹plugins文件夹 在浏览器输入url能够看到对应的静态资源,如果看不到说明…

4核8G服务器选阿里云还是腾讯云?价格性能对比

4核8G云服务器多少钱一年?阿里云ECS服务器u1价格955.58元一年,腾讯云轻量4核8G12M带宽价格是646元15个月,阿腾云atengyun.com整理4核8G云服务器价格表,包括一年费用和1个月收费明细: 云服务器4核8G配置收费价格 阿里…