Pytorch代码入门学习之分类任务(一):搭建网络框架

目录

一、网络框架介绍

二、导包

三、定义卷积神经网络

3.1 代码展示

3.2  定义网络的目的

3.3 Pytorch搭建网络

四、测试网络效果


一、网络框架介绍

        网络理解:

        将32*32大小的灰度图片(下述的代码中输入为32*32大小的RGB彩色图片),输入到网络中;经过第一次卷积C1,变成了6通道、28*28大小的一个特征向量;通过一次下采样S2,变成了6通道、14*14大小的一个特征向量,其宽高相当于折损了一般;经过第二次卷积C3,变成了16通道、10*10大小的一个特征向量;通过第二次下采样S4,变成了16通道、5*5大小的一个特征向量;最后三层全连接输出。

        ①Convolutious(卷积):涉及到输入、输出与很多参数的设置,需要初始化。

        ②Subsampling(下采样):该网络中使用的是最大池化下采样的方法,最大池化下采样的和维2*2大小。

        最大池化:Max Pooling,取窗口内的最大值作为输出。

        ③Full Connection(全连接):需要初始化。

二、导包

import torch  # torch基础库
import torch.nn as nn  # torch神经网络库
import torch.nn.functional as F

三、定义卷积神经网络

3.1 代码展示

class Net(nn.Module):
    # 初始化
    def __init__(self):
        super(Net,self).__init__()
        self.conv1 = nn.Conv2d(3,6,5)
        self.conv2 = nn.Conv2d(6,16,5)
        self.fc1 = nn.Linear(16*5*5,120)
        self.fc2 = nn.Linear(120,84)
        self.fc3 = nn.Linear(84,10)

    # 前向传播
    def forward(self,x):
        x = self.conv1(x)
        x = F.relu(x)
        x = F.max_pool2d(x,(2,2))
        x = F.max_pool2d(F.relu(self.conv2(x)),2)
        x = x.view(-1,x.size()[1:].numel())
        x = F.relu(self.fc1(x))  # 进入全连接层需要进行激活函数
        x = F.relu(self.fc2(x))
        x = self.fc3(x)  # 最后一层为输出层,要输出结果,不需要进行激活
        return x

3.2  定义网络的目的

        希望网络有科学系参数,通过输入数据的训练让相关参数不断更新、梯度下降到一个合适的值,之后输入新的图片,可以进行分类或者预测。

3.3 Pytorch搭建网络

        Pytorch搭建网络通常会采用类进行管理,可取名为Net(该名字可以更换),通常需要继承nn.Model类(相当于在Net中将Model定义好的方法直接进行使用)。搭建网络通常包括两个函数:

        ①初始化函数(含有默认参数):实例化这个类的时候会自动执行的一部分,这里面放网络需要初始化的内容。

 def __init__(self)

         A. super(Net,self).__init__():在该函数中通常需要进行多继承操作,相当于把Model类里面继承的类以及全部的类的方法都继承下来,供Net去使用;

        B. nn.Conv2d(3,6,5):2d卷积核的函数,只涉及三个参数,其余参数使用默认值;第一个参数为输入的通道数,第二个参数为输出特征向量的通道数,第三个参数为卷积核大小(使用output公式进行计算 W-F+1=28,W=32,F=5 );

        Output = \frac{W-F+2P}{S} + 1:其中W是指宽高,F是指所求的ColorSize的大小,P是指Padding—像图片外面补边,让它去遍历,默认为0;S是指步长,卷积核遍历图片的步长,默认为1;

        C. nn.Linear(16*5*5,120):全连接层的初始化,涉及两个参数(输入特征的维数大小和输出特征的维数大小),全连接层需要对特征做一个拉平,将每一个特征拉平,将上一个特征向量拉为一条直线,送给全连接层;

        ②前向传播函数:需实现前向回归逻辑,相当于完成整个网络运行的逻辑,x是指输入,相当于上图中的input。

def forward(self,x)

        A. F.relu(x):relu激活函数,激活之后网络具有非线性的分离能力;

        B. tensor[batch,channel,H,W]: channel是指通道数,例如RBG三通道这些概念、H是指高,W是指宽,batch是指有几批这样的数据;

        C. F.max_pool2d(x,(2,2)):最大池化下采样对x进行处理;

        D. x.view(-1,x.size()[1:].numel()):进行拉平、展平之后给全连接层,对当前的输入数据x进行一个形式转换,输入行和列,这里所对应的列等于self.fc1 = nn.Linear(16*5*5,120)这里所对应的行,为x.size切片之后数据的乘积;行信息根据批次信息自动生成,-1让程序自动生成这个行;为什么要切1,对于tensor信息来说,将batch切掉,channel、H、W相乘等于16*5*5;

       注意: Pytorch处理的都是张量(张量是神经网络所使用的主要数据结构)数据。

四、测试网络效果

        相当于打印网络初始化部分,也可以与网络结构相对应检查一下。

net = Net()
print(net)

        参考:Pytorch逐行代码入门学习_哔哩哔哩_bilibili

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

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

相关文章

《语音优先》智能语音技术驱动的交互界面设计与语音机器人设计(译者序)...

“言为心声,语为心境”,语言与对话是我们沟通与协作的重要方式。而智能语音技术是一种基于人工智能和自然语言处理技术的语音交互技术。它可以通过语音识别技术将用户的语音指令转换为文本,然后通过自然语言处理技术对文本进行分析和理解,最终…

第10期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】

【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】 1、概述2、实验环境3、 物品说明4、参考资料与自我总结5、实验过程1、创建目录2、克隆下载文件3、 拉取子目录安装和交叉编译工具链等其他工具4、添加环境变量6、将样例文件拷贝到桌面…

【Oracle】Navicat Premium 连接 Oracle的两种方式

Navicat Premium 使用版本说明 Navicat Premium 版本 11.2.16 (64-bit) 一、配置OCI 1.1 配置OCI环境变量 1.1.2 设置\高级系统设置 1.1.2 系统属性\高级\环境变量(N) 1.1.3 修改/添加系统变量 ORACLE_HOME ORACLE_HOME D:\app\root\product\12.1.0\dbhome_11.1.4 添加系…

Open3D(C++) 最小二乘拟合平面(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 平面方程的一般表达式为: A x + B y + C

redis场用命令及其Java操作

目录 1. Redis入门 1.1 Redis简介 1.2 Redis下载与安装 1.2.1 Redis下载 1.2.2 Redis安装 1.3 Redis服务启动与停止 1.3.1 服务启动命令 1.3.2 客户端连接命令 1.3.3 修改Redis配置文件 1.3.4 Redis客户端图形工具 2. Redis数据类型 2.1 五种常用数据类型介绍 2.2 …

vue中替换全局字体

一、背景 产品说项目要拿去展会展示,但现在项目字体是微软雅黑,不支持商用,需要全局替换思源字体。 二、下载字体 推荐一个网址,好用 字体天下,点击跳转 下载好的文件如下: 三、引入字体 1、在项目…

一键自助建站系统api版系统源码

自助建站系统,一建建站系统api版,自动建站 安装推荐php7.2或7.2以下都行 可使用虚拟主机或者服务器进行搭建。 分站进入网站后台 域名/admin 初始账号123456qq.com密码123456 找到后台的网站设置 将主站域名及你在主站的通信secretId和通信secretKey填进去。 即可正常使用 通信…

测试用例的设计方法(全):等价类划分方法

一.方法简介 1.定义 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。 2.划分等价类: 等价类是指某个输入域的…

自动驾驶,从“宠儿”走进“淘汰赛”

从“一步到位”到场景、技术降维。从拼落地路径,到拼雷达、算力,再到如今的性价比之争,自动驾驶似乎变得愈发“接地气”。 作者|斗斗 编辑|皮爷 出品|产业家 比起去年,黄文欢和张放今年显得更加忙碌。 “自动驾驶赛道&…

MYSQL表的连接方式

mysql表连接方式可以分为 1、内连接 2、外连接 3、全连接 4、交叉连接 t1表 t2表 1、内连接,包括自然连接,等值连接,不等值连接 1.1、自然连接,根据相同字段进行连接匹配…

7-1、S曲线加减速原理【51单片机控制步进电机-TB6600系列】

摘要:本节介绍步进电机S曲线相关内容,总共分四个小节讨论步进电机S曲线相关内容   根据上节内容,步进电机每一段的速度可以任意设置,但是每一段的速度都会跳变,当这个跳变值比较大的时候,电机会发生明显的…

ChatGPT AIGC 快速合并Excel工作薄 Vlookup+INDIRECT

在职场中进行数据处理,数据分析汇报与统计的过程中,经常会遇到这样的一个问题,那就是需要统计的数据源在多个文件中,多个工作薄中,如果要进行数据处理,汇总的时候会很不方便。 如果要汇总6个月的数据可能就得需要手动复制了。 再或者用其它方法来进行数据合并。 例如我…

Zabbix安装与部署

前言 Zabbix是一个开源的网络监控和系统监控解决方案,用于监控服务器、网络设备、应用程序和服务。它基于客户端-服务器体系结构,使用多种监控选项来监控不同类型的设备和应用程序。Zabbix支持数据收集、处理和存储,以及报警和可视化等功能。…

前沿重器[36] | ACL23-基于检索的大语言模型-报告阅读

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…

(三)库存超卖案例实战——使用redis分布式锁解决“超卖”问题

前言 在上一节内容中我们介绍了如何使用mysql数据库的传统锁(行锁、乐观锁、悲观锁)来解决并发访问导致的“超卖问题”。虽然mysql的传统锁能够很好的解决并发访问的问题,但是从性能上来讲,mysql的表现似乎并不那么优秀&#xff…

NewStarCTF2023week4-R通大残(RGB通道隐写)

最开始试了很多Misc常见的其他方向,啥也没找到... 后面重新仔细看了一下题目,联想到R通道,R是储存红色的通道,通道里有R(红)、G(绿)、B(蓝)三个通道&#xf…

用 pytorch 训练端对端验证码识别神经网络并进行 C++ 移植

文章目录 前言安装安装 pytorch安装 libtorch安装 opencv(C) 准备数据集获取训练数据下载标定 编码预分析 数据集封装格式 神经网络搭建神经网络训练神经网络测试神经网络预测C 移植模型转换通过跟踪转换为 Torch Script通过注解转换为 Torch Script 编写…

Unity Inspector编辑器扩展,枚举显示中文,枚举值自定义显示内容

记录!Unity Inspector面板编辑器扩展,枚举显示中文,枚举值自定义显示内容,显示部分选项。效果如下: 枚举类代码: using System.Collections; using System.Collections.Generic; using UnityEngine;public…

NSS [SWPUCTF 2022 新生赛]numgame

NSS [SWPUCTF 2022 新生赛]numgame 开题有一个数学表达式,试了一下不可能/-到正确的答案。 view-source:查看源码 解码之后是一个路由/NsScTf.php,访问一下得到了真正的源码。 访问一下/hint2.php call_user_func():把第一个参数作为回调函数…
最新文章