神经网络入门实战:(十四)pytorch 官网内置的 CIFAR10 数据集,及其网络模型

news2024/12/27 8:07:37

(一) pytorch 官网内置的网络模型

图像处理:

Models and pre-trained weights — Torchvision 0.20 documentation

(二) CIFAR10数据集的分类网络模型(仅前向传播):

下方的网络模型图片有误,已做修改,具体情参考代码。

在这里插入图片描述

1)代码如下:

Sequential() 函数的 demo
Sequential() 函数可以快速定义一个前馈神经网路,按顺序堆叠不同的层,但是要保证层之间的输入和输出尺寸要匹配。

import torch
from torch import nn
import torchvision
from torchvision import transforms
from torch.utils.data import DataLoader

class CIFAR10_NET(nn.Module):
	def __init__(self):
		super(CIFAR10_NET, self).__init__()
		self.conv1 = nn.Conv2d(3, 32, 5,padding=2) # 输入输出尺寸相同,故根据公式计算出padding的值
		self.pool1 = nn.MaxPool2d(2, 2)
		self.conv2 = nn.Conv2d(32, 32, 5,padding=2)
		self.pool2 = nn.MaxPool2d(2, 2)
		self.conv3 = nn.Conv2d(32, 64, 5,padding=2)
		self.pool3 = nn.MaxPool2d(2, 2)
		self.flatten = nn.Flatten()
		self.linear1 = nn.Linear(1024, 64)
		self.linear2 = nn.Linear(64, 10)

	def forward(self, x):
		x = self.conv1(x)
		x = self.pool1(x)
		x = self.conv2(x)
		x = self.pool2(x)
		x = self.conv3(x)
		x = self.pool3(x)
		x = self.flatten(x)
		x = self.linear1(x)
		x = self.linear2(x)
		return x

CIFAR10_NET_Instance = CIFAR10_NET()
print(CIFAR10_NET_Instance)

Sequential() 函数的 demo

import torch
from torch import nn
from torch.utils.tensorboard import SummaryWriter


class CIFAR10_NET(nn.Module):
	def __init__(self):
		super(CIFAR10_NET, self).__init__()
		self.model = nn.Sequential(
			nn.Conv2d(3, 32, 5, padding=2),  # 输入输出尺寸相同,故根据卷积层的公式计算出padding的值,此时默认stride=1
			nn.MaxPool2d(2, 2),
			nn.Conv2d(32, 32, 5, padding=2),
			nn.MaxPool2d(2, 2),
			nn.Conv2d(32, 64, 5, padding=2),
			nn.MaxPool2d(2, 2),
			nn.Flatten(),
			nn.Linear(1024, 64),
			nn.Linear(64, 10)
		)

	def forward(self, x):
		x = self.model(x)
		return x

CIFAR10_NET_Instance = CIFAR10_NET()
print(CIFAR10_NET_Instance)

writer = SummaryWriter('logs')
writer.add_graph(CIFAR10_NET_Instance, (torch.rand(1, 3, 32, 32), )) # 在tensorboard中将计算图可视化
writer.close()

在命令行使用 tensorboard 的效果图:

在这里插入图片描述

双击网络模型名:

在这里插入图片描述

继续双击会出现更多的细节内容!!

2)注意点:

  • 如果想要输入和输出的尺寸相同的话,需要按照卷积层中的公式来计算 paddingstride 的值,具体情参考笔记(十)。

  • 一般先搭建网络,在导入数据集之前,往往先用以下代码进行测试:

    # 先创建网络模型实例,假设为 test_net
    input = torch.ones((64,in_channels,H_in,W_in)) # in_channels、H_in、W_in根据数据集的输入设置
    output = test_net(input)
    print(output.shape)
    

    如果网络模型有错误,就会报错。


上一篇下一篇
神经网络入门实战(十三)待发布

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

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

相关文章

微信小程序wx.showShareMenu配置全局分享功能

在app.js文件中配置如下即可: onLaunch() {//开启分享功能this.overShare()},/*** 开启朋友圈分享功能* 监听路由切换/自动执行*/overShare() {wx.onAppRoute((res) > {// console.log(route, res)let pages getCurrentPages()let view pages[pages.length - …

Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等

前言 相信大家在刷算法题的过程中,好不容易想出来大概的思路,也知道去用哪个集合类,但各个集合类的一些命令都长得太像,很容易将他们弄错,并且在各集合之间的转化也是特别烦人,还有很多实用的函数都知道可…

用 NotePad++ 运行 Java 程序

安装包 网盘链接 下载得到的安装包: 安装步骤 双击安装包开始安装. 安装完成: 配置编码 用 NotePad 写 Java 程序时, 需要设置编码. 在 设置, 首选项, 新建 中进行设置, 可以对每一个新建的文件起作用. 之前写的文件不起作用. 在文件名处右键, 可以快速打开 CMD 窗口, 且路…

【金猿CIO展】复旦大学附属中山医院计算机网络中心副主任张俊钦:推进数据安全风险评估,防范化解数据安全风险,筑牢医疗数据安全防线...

‍ 张俊钦 本文由复旦大学附属中山医院计算机网络中心副主任张俊钦撰写并投递参与“数据猿年度金猿策划活动——2024大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数据要素时代,医疗数据已成为医院运营与决策的重要基石…

计算机视觉——相机标定(Camera Calibration)

文章目录 1. 简介2. 原理3. 相机模型3.1 四大坐标系3.2 坐标系间的转换关系3.2.1 世界坐标系到相机坐标系3.2.2 相机坐标系到图像坐标系3.2.3 像素坐标系转换为图像坐标系3.2.4 世界坐标转换为像素坐标 3.3 畸变3.3.1 畸变类型3.3.1.1 径向畸变(Radial Distortion&a…

Go学习:编译器(编写程序时应该注意的点)

一、注意: LiteIDE工具: (1)创建项目后,同一个目录下的go文件 只能有一个 main函数,如果多个文件都有main函数,会出现编译错误。例如: (2)如果一个目录下多…

【计算机网络】实验9: 路由信息协议RIP

实验9 路由信息协议RIP 一、实验目的 本实验的主要目的是深入理解RIP(路由信息协议)的工作原理,以便掌握其在网络中的应用。通过对RIP的学习,我们将探讨该协议如何实现路由选择和信息传播,从而确保数据包能够在网络中…

如何选择适合的开源架构框架

如何选择适合的开源架构框架 一、引言二、明确项目需求 —— 筑牢基石(一)功能需求剖析 —— 精准锁定核心(二)性能要求考量 —— 追求极致卓越(三)可扩展性需求 —— 放眼未来蓝图 三、评估开源框架特性 —…

MongoDB-BSON 协议与类型

前言: MongoDB 是一个高性能、无模式的 NoSQL 数据库,广泛应用于大数据处理和实时数据存储。作为一个数据库系统,MongoDB 的核心之一就是其使用的 BSON(Binary JSON)格式,它用于存储数据以及在客户端和数据…

jmeter如何导出中文版的测试报告?

文章目录 0、初始步骤:把报告模板换成中文形式1、首先添加一份聚合报告2、然后点开【聚合报告】3,生成报告3.1 选择【工具】-【generate HTML report】3.2 【generate HTML report】参数详解3.3 、最后点击 【generate report】直接生成。 声明&#xff…

等差数列末项计算

等差数列末项计算 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 给出一个等差数列的前两项a1,a2,求第n项是多少。 输入 一行,包含三个整数a1,a2&#x…

芯科科技突破性超低功耗Wi-Fi 6和低功耗蓝牙5.4模块加速设备部署

致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,今日宣布推出SiWx917Y超低功耗Wi-Fi 6和低功耗蓝牙(Bluetooth LE)5.4模块。 作为成功的第二代无线开发平台的新产品&…

Golang内存模型总结1(mspan、mcache、mcentral、mheap)

1.内存模型 1.1 操作系统存储模型 从上到下分别是寄存器、高速缓存、内存、磁盘,其中越往上速度越快,空间越小,价格越高。 关键词是多级模型和动态切换 1.2 虚拟内存与物理内存 虚拟内存是一种内存管理技术,允许计算机使用比…

重生之我在异世界学编程之C语言:操作符篇

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文1. 算术操作符2. 关系&#xff0…

深度学习图像增强介绍

目录 一、引言二、常用数据增广方法三、图像变换类3.1 AutoAugment3.2 RandAugment 四、图像裁剪类4.1 Cutout4.2 RandomErasing4.3 HideAndSeek 五、图像混叠5.1 Mixup5.2 Cutmix 六、结论 一、引言 在图像分类任务中,图像数据的增广是一种常用的正则化方法&#…

HBU深度学习实验14-循环神经网络(1)

前言,预备知识 循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络.在循环神经网络中,神经元不但可以接受其他神经元的信息,也可以接受自身的信息,形成具…

使用GDI对象绘制UI时需要注意的若干细节问题总结

目录 1、一个bitmap不能同时被选进两个dc中 2、CreateCompatibleDC和CreateCompatibleBitmap要使用同一个dc作为参数 3、不能删除已经被选入DC中的GDI对象 4、使用完的GDI对象,要将之释放掉,否则会导致GDI对象泄漏 5、CreateCompatibleBitmap返回错…

【Java-数据结构篇】Java 中栈和队列:构建程序逻辑的关键数据结构基石

我的个人主页 我的专栏:Java-数据结构,希望能帮助到大家!!!点赞❤ 收藏❤ 一、引言 1. 栈与队列在编程中的角色定位 栈和队列作为两种基本的数据结构,在众多编程场景中都有着独特的地位。它们为数据的有序…

洛谷P2670扫雷游戏(Java)

三.P2670 [NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩…

vue2:Cascader 级联选择器中加载两种不同的数据结构

前言 因UI调整,需要将el-tree控件更换为级联选择器,而在原树形控件中,加载了两种不同的数据结构,(参见vue2:树形控件el-tree中加载两种不同结构的数据_vue2 树形插件-CSDN博客)所以现在级联选择器中也需要加载这两种不同的数据结构。 问题 原本以为处理方式差不多,在…