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.mzph.cn/news/121973.shtml

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

相关文章

【QT开发(17)】2023-QT 5.14.2实现Android开发

1、简介 搭建Qt For Android开发环境需要安装的软件有: JAVA SDK (jdk 有apt install 安装) Android SDK Android NDKQT官网的介绍: Different Qt versions depend on different NDK versions, as listed below: Qt versionNDK…

十五、城市建成区时空扩张分析——风向玫瑰图制作

一、前言 风向玫瑰图(简称风玫瑰图)也叫风向频率玫瑰图,它是根据某一地区多年平均统计的各个风向的百分数值,并按一定比例绘制,一般多用8个或16个罗盘方位表示,由于形状酷似玫瑰花朵而得名。 玫瑰图上所表示风的吹向,是指从外部吹向地区中心的方向,各方向上按统计数值…

13. 机器学习 - 数据集的处理

文章目录 Training data splitNormalizationStandardizedONE-HOT补充:SOFTMAX 和 CROSS-ENTROPY Hi, 你好。我是茶桁。 上一节课,咱们讲解了『拟合』,了解了什么是过拟合,什么是欠拟合。也说过,如果大家以…

SK海力士:将成为引领人工智能时代的定制型半导体存储器公司

AI芯片是一种专门针对人工智能应用设计的芯片,能够高效地处理人工智能任务,如机器学习、深度学习等。AI芯片具有高运算速度、低功耗、便于集成等特点,是人工智能领域的重要发展方向之一。 目前,AI芯片主要分为GPU、FPGA和ASIC三种…

Spark On Hive原理和配置

目录 一、Spark On Hive原理 (1)为什么要让Spark On Hive? 二、MySQL安装配置(root用户) (1)安装MySQL (2)启动MySQL设置开机启动 (3)修改MySQL…

Spring Boot进阶(94):从入门到精通:Spring Boot和Prometheus监控系统的完美结合

📣前言 随着云原生技术的发展,监控和度量也成为了不可或缺的一部分。Prometheus 是一款最近比较流行的开源时间序列数据库,同时也是一种监控方案。它具有极其灵活的查询语言、自身的数据采集和存储机制以及易于集成的特点。而 Spring Boot 是…

Android-宝宝相册(第四次作业)

第四次作业-宝宝相册 题目 用Listview建立宝宝相册,相册内容及图片可自行设定,也可在资料文件中获取。给出模拟器仿真界面及代码截图。 (参考例4-8) 创建工程项目 创建名为baby的项目工程,最后的工程目录结构如下图所…

报错:SSL routines:ssl3_get_record:wrong version number

一、问题描述 前后端联调的时候,连接后端本地服务器,接口一直pending调不通,控制台还报以下错误: 立马随手搜索了一下解决方案,但是emmm,不符合前端的实际情况: 二、解决方法: 实际…

SpringCore完整学习教程5,入门级别

本章从第6章开始 6. JSON Spring Boot提供了三个JSON映射库的集成: Gson Jackson JSON-B Jackson是首选的和默认的库。 6.1. Jackson 为Jackson提供了自动配置,Jackson是spring-boot-starter-json的一部分。当Jackson在类路径上时,将自动配置Obj…

理解V3中的proxy和reflect

现有如下面试题 结合GeexCode和Gpt // 这个函数名为onWatch,接受三个参数obj、setBind和getlogger。 // obj是需要进行监视的对象。 // setBind是一个回调函数,用于在设置属性时进行绑定操作。 // getlogger是一个回调函数,用于在获取属性时…

【阅读和学习代码】VoxelNet

文章目录 将点特征 转换为 voxel 特征稀疏张量 到 稠密张量,反向索引参考博客 将点特征 转换为 voxel 特征 https://github.com/skyhehe123/VoxelNet-pytorch/blob/master/data/kitti.py 【Python】np.unique() 介绍与使用 self.T : # maxiumum numbe…

php简单后门实现及php连接数据库

php简单后门实现 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>easybackdoor</title>…

云服务器搭建Spark集群

文章目录 1. Local 模式1.1 安装local模式1.2 命令行工具1.3 提交本地应用 2. Standlone模式2.1 集群配置2.2 修改配置文件2.3 启动集群与停止集群2.4 提交应用到集群环境2.5 提交应用的参数详细说明2.6 配置历史服务2.7 配置高可用&#xff08;HA&#xff09; 3. Yarn模式&…

如何使用ffmpeg制作透明背景的视频

最近我们尝试在网页上叠加数字人讲解的功能&#xff0c;发现如果直接在网页上放一个矩形的数字人视频&#xff0c;效果会很差&#xff0c;首先是会遮挡很多画面的内容&#xff0c;其次就是不管使用任何任务背景&#xff0c;画面都和后面的网页不是很协调&#xff0c;如图所示&a…

提升技能,挑战自我——一站式在线题库小程序

在这个信息爆炸的时代&#xff0c;我们总是在寻找一种方式&#xff0c;让自己在众多的知识海洋中快速提升技能&#xff0c;挑战自我。今天&#xff0c;我要向大家推荐一款全新的在线题库小程序KD蝌蚪阿坤&#xff0c;它将帮助你实现这个目标。 KD蝌蚪阿坤是一款全面的在线题库…

5 个编写高效 Makefile 文件的最佳实践

在软件开发过程中&#xff0c;Makefile是一个非常重要的工具&#xff0c;它可以帮助我们自动化构建、编译、测试和部署。然而&#xff0c;编写高效的Makefile文件并不是一件容易的事情。在本文中&#xff0c;我们将讨论如何编写高效的Makefile文件&#xff0c;以提高我们的开发…

Python---练习:有一物,不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?

案例&#xff1a; 有一物&#xff0c;不知其数&#xff0c;三三数之余二&#xff0c;五五数之余三&#xff0c;七七数之余二&#xff0c;问物几何&#xff1f; 人话&#xff1a; 有一个数字&#xff0c;不知道具体是多少&#xff0c;用3去除剩2&#xff0c;用5去除剩3&#…

Linux中shell脚本中的变量

目录 一、变量的定义 二、shell脚本中变量的定义方法 1、变量名称 2、环境级别 3、用户级别 4、系统级别 5、删除设定的变量 三、变量的转译 1、转译 2、声明 3、变量的数组 四、Linux中命令的别名设定 五、用户环境变量的更改 脚本中的传参 1、非交互模式 2…

android studio启动Task配置

Android studio 高版本默认不开启Task配置&#xff0c;需要自己手动开启 1.低版本配置路径&#xff1a;&#xff08;复制他人图片&#xff09; 2.高版本路径&#xff1a;添加下图勾选配置即可 3.gradle task 3.1 初识task gradle中所有的构建工作都是由task完成的,它帮我们处…

Anaconda下载和安装

1.概述 1&#xff09;包含conda&#xff1a;conda是一个环境管理器&#xff0c;其功能依靠conda包来实现&#xff0c;该环境管理器与pip类似。 2&#xff09;安装大量工具包&#xff1a;Anaconda会自动安装一个基本的python&#xff0c;该python的版本Anaconda的版本有关。该…