PyTorch入门-torchvision

news2025/5/29 9:25:34

torchvision

torchvision 是 PyTorch 的一个重要扩展库,专门针对计算机视觉任务设计。它提供了丰富的预训练模型、常用数据集、图像变换工具和计算机视觉组件,大大简化了视觉相关深度学习项目的开发流程。

我们可以在Pytorch的官网找到torchvision的文档

在这里插入图片描述

文档中提供了很多数据集

在这里插入图片描述

这里以CIFAR10为例,它是图像分类常用的数据集

CIFAR-10 数据集由 60,000 张 32x32 像素的彩色图像组成,分为 10 个类别,每个类别有 6,000 张图像。其中 50,000 张是训练图像,10,000 张是测试图像。

数据集分为五个训练批次和一个测试批次,每个批次包含 10,000 张图像。测试批次包含每个类别中随机选择的 1,000 张图像。训练批次包含剩余的图像,顺序随机,但某些训练批次可能包含一个类别的更多图像。所有训练批次加起来正好包含每个类别的 5,000 张图像。

在这里插入图片描述
在这里插入图片描述

除了数据集之外,还提供了模型torchvision.models 模块包含了一系列预训练的深度学习模型,广泛应用于图像分类、目标检测、语义分割等任务。

我们可以通过代码下载数据集

import torchvision

trans_set = torchvision.datasets.CIFAR10(root = "./dataset",train= True,download= True)
test_set = torchvision.datasets.CIFAR10(root = "./dataset",train= False,download= True)

参数列表

  1. root (str):
    • 数据集存储的路径,数据将下载到此目录下。
  2. train (bool, optional):
    • 如果为 True,则加载训练集;如果为 False,则加载测试集。默认值为 True
  3. transform (callable, optional):
    • 一个函数/转换,用于对图像进行预处理,比如数据增强、归一化等。
  4. target_transform (callable, optional):
    • 一个函数/转换,用于对目标(标签)进行处理。
  5. download (bool, optional):
    • 如果为 True,则从网上下载数据集(如果在指定路径中不存在)。默认值为 False

下载完成后可以看到项目目录中的数据集
在这里插入图片描述

我们可以打印一下print("训练集数量:", len(trans_set)) 查看训练集数量

在这里插入图片描述

完整代码如下,可以看到我们的第一个图片是cat

import torchvision

# 下载并加载CIFAR10训练数据集
trans_set = torchvision.datasets.CIFAR10(root = "./dataset", train= True, download= True)

# 下载并加载CIFAR10测试数据集
test_set = torchvision.datasets.CIFAR10(root = "./dataset", train= False, download= True)

# 获取测试集的第一个样本和对应的标签
img, target = test_set[0]
# 显示测试集中的类别标签
print(test_set.classes) # ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
# 显示样本的图像数据
print(img) # <PIL.Image.Image image mode=RGB size=32x32 at 0x1BF002C7710>
# 显示样本的标签
print(target) # 3
# 根据标签索引对应的类别名称
print(test_set.classes[target]) # cat
# 显示图像
# 在这里使用PIL库的Image模块的show方法,直接在屏幕上展示图像
img.show()

这个数据集的图片都比较小(32x32 像素),放大以后虽然这个看起来并不像猫,反而像老鼠,但是它就是cat

在这里插入图片描述

上面我们得到的数据类型是PIL,我们需要转为tensor类型,我们只需要新增一个Compose然后修改dataset代码

# 定义数据集转换
dataset_transform = torchvision.transforms.Compose([
    # 将图像数据转换为 Tensor
    torchvision.transforms.ToTensor()    
    # 还可以对 Tensor 进行归一化,参数分别表示均值和标准差
    #torchvision.transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
# 下载并加载CIFAR10训练数据集
# 参数:
#   root: 指定数据集的保存路径
#   train: 指示是训练数据集(True)还是测试数据集(False)
#   transform: 对数据集中的每个图像应用的转换操作
#   download: 如果数据集不存在于指定路径且设置为True,则会自动下载数据集
trans_set = torchvision.datasets.CIFAR10(root = "./dataset", train= True, transform= dataset_transform,download= True)
# 下载并加载CIFAR10测试数据集,参数同上
test_set = torchvision.datasets.CIFAR10(root = "./dataset", train= False,transform= dataset_transform, download= True)

然后我们执行之后,控制台会打印图片,此时是我们想要的tensor数据类型(tensor类型图片不能使用show()

在这里插入图片描述

我们就可以显示在tensorBoard中

writer = SummaryWriter("pics")
# 获取测试集的10个样本和对应的标签
for i in range(10):
    img, target = test_set[i]
    writer.add_image("test_set", img, i)

writer.close()

仔细看,能够依稀辨认出第十张图片是车
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

18、Python字符串全解析:Unicode支持、三种创建方式与长度计算实战

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约6分钟 文章目录 一、问题&#xff1a;Python的字符串是什么&#xff1f;1、例子1&#xff1a;多语言支持演示2、例子2&#xff1a;字符串不可变性验证3、答案&#xff1a;&#xff08;1&#xff09…

5月27日复盘-Transformer介绍

5月27日复盘 二、层归一化 层归一化&#xff0c;Layer Normalization。 Layer Normalizatioh和Batch Normalization都是用来规范化中间特征分布&#xff0c;稳定和加速神经网络训练的&#xff0c;但它们在处理方式、应用场景和结构上有本质区别。 1. 核心区别 特征BatchNo…

MyBatis-Plus一站式增强组件MyBatis-Plus-kit(更新2.0版本):零Controller也能生成API?

MyBatis-Plus-Kit &#x1f680; MyBatis-Plus-Kit 是基于MyBatis-Plus的增强组件&#xff0c;专注于提升开发效率&#xff0c;支持零侵入、即插即用的能力扩展。它聚焦于 免写 Controller、代码一键生成、通用响应封装 等核心场景&#xff0c;让您只需专注业务建模&#xff0…

实时数仓flick+clickhouse启动命令

1、启动zookeeper zk.sh start 2、启动DFS&#xff0c;Hadoop集群 start-dfs.sh 3、启动yarn start-yarn.sh 4、启动kafka 启动Kafka集群 bin/kafka-server-start.sh -daemon config/server.properties 查看Kafka topic 列表 bin/kafka-topics.sh --bootstrap-server local…

【Git】Commit Hash vs Change-Id

文章目录 1、Commit 号2、Change-Id 号3、区别与联系4、实际场景示例5、为什么需要两者&#xff1f;6、总结附录——Gerrit 在 Git 和代码审查工具&#xff08;如 Gerrit&#xff09;中&#xff0c;Commit 号&#xff08;Commit Hash&#xff09; 和 Change-Id 号 是两个不同的…

【KWDB创作者计划】_KWDB分布式多模数据库智能交通应用——高并发时序处理与多模数据融合实践

导读&#xff1a;本文主要探讨了基于KWDB的分布式多模数据库智能交通应用场景&#xff0c;进行了高并发时序处理与多模数据融合实践方向的思考。探索智慧交通领域的数据实时处理与存储资源利用方面的建设思路。 本文目录 一、智能交通数据架构革命   1.1 传统架构瓶颈  …

Java集合框架与三层架构实战指南:从基础到企业级应用

一、集合框架深度解析 1. List集合的武林争霸 ArrayList&#xff1a; 数组结构&#xff1a;内存连续&#xff0c;查询效率O(1) 扩容机制&#xff1a;默认扩容1.5倍&#xff08;源码示例&#xff09; private void grow(int minCapacity) {int oldCapacity elementData.len…

6个月Python学习计划 Day 2 - 条件判断、用户输入、格式化输出

6个月Python学习计划&#xff1a;从入门到AI实战&#xff08;前端开发者进阶指南&#xff09; Python 基础入门 & 开发环境搭建 &#x1f3af; 今日目标 学会使用 input() 获取用户输入掌握 if/else/elif 条件判断语法熟悉格式化输出方式&#xff1a;f-string、format() …

目标检测 TaskAlignedAssigner 原理

文章目录 TaskAlignedAssigner 原理和代码使用示例 TaskAlignedAssigner 原理和代码 原理主要是结合预测的分类分数和边界框与真实标注的信息&#xff0c;找出与真实目标最匹配的锚点&#xff0c;为这些锚点分配对应的目标标签、边界框和分数。 TaskAlignedAssigner 是目标检…

游戏:元梦之星游戏开发代码(谢苏)

《元梦之星》是一款轻松社交派对游戏,玩家们可以化身星宝,体验纯粹的游玩乐趣,收获简单的快乐。无论i人e人,都能轻松找到属于自己的社交方式。 《元梦之星》的快乐,可以是闯关夺冠时的激动&#xff0c;谁是狼人推理的巧妙&#xff0c;峡谷3V3打赢团战的爽感。也可以是星梦广场开…

TCP协议原理与Java编程实战:从连接建立到断开的完整解析

1.TCP协议核心&#xff1a;面向连接的可靠通信基石 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网的“可靠信使”&#xff0c;属于传输层协议&#xff0c;其核心在于面向连接和可靠传输。它通过严谨的握手机制与数据控制逻辑&am…

鸿蒙仓颉开发语言实战教程:实现商城应用详情页

昨天有朋友提到鸿蒙既然有了ArkTs开发语言&#xff0c;为什么还需要仓颉开发语言。其实这个不难理解&#xff0c;安卓有Java和Kotlin&#xff0c;iOS先后推出了Objective-C和Swift&#xff0c;鸿蒙有两种开发语言也就不奇怪了。而且仓颉是比ArkTs更加灵活的语言&#xff0c;虽然…

GitAny - 無需登入的 GitHub 最新倉庫檢索工具

地址&#xff1a;https://github.com/MartinxMax/gitany GitAny - 無需登入的 GitHub 專案搜尋工具 GitAny 是一款基於 Python 的工具&#xff0c;允許你在無需登入的情況下搜尋當天最新的 GitHub 專案。它支援模糊搜尋、條件篩選以及倉庫資料的視覺化分析。 安裝依賴 $ pip…

在飞牛nas系统上部署gitlab

在飞牛nas系统上部署gitlab需要使用docker进行部署&#xff0c;如下将介绍详细的部署流程。 文章目录 1. docker镜像2. 拉取镜像3. 运行容器4. 运行和访问gitlab5. 一些小配置5.1 url问题5.2 ssh端口5.3 其他配置 1. docker镜像 首先需要找一个gitlab的docker镜像地址&#x…

深入理解 Redis 哨兵模式

Redis 哨兵模式深度解析&#xff1a;从原理到实践的全流程指南 在分布式系统架构中&#xff0c;Redis 作为高性能的内存数据库&#xff0c;其哨兵模式&#xff08;Sentinel&#xff09;是保障服务高可用性的核心方案。本文将从基础概念、运行机制出发&#xff0c;结合具体配置…

[特殊字符]《Qt实战:基于QCustomPlot的装药燃面动态曲线绘制(附右键菜单/样式美化/完整源码)》

1、将qcustomplot.cpp qcustomplot.h放入工程目录下引入qcustomplot 2、代码 .h #if defined(_MSC_VER) #pragma execution_character_set(

力扣-最大连续一的个数

1.题目描述 2.题目链接 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; 3.代码解答 class Solution {public int longestOnes(int[] nums, int k) {int zero0,length0;for(int left0,right0;right<nums.length;right){if(nums[right]0){zero;}while…

无人机避障——深蓝学院浙大栅格地图以及ESDF地图内容

Occupancy Grid Map & Euclidean Signed Distance Field: 【注意】&#xff1a;目的是为了将有噪声的传感器收集起来&#xff0c;用于实时的建图。 Occupancy Grid Map&#xff1a; 概率栅格&#xff1a; 【注意】&#xff1a;由于传感器带有噪声&#xff0c;在实际中基于…

Postman基础操作

1.Postman是什么&#xff1f; Postman是接口测试的工具&#xff0c;简单来说它能模拟浏览器对服务器的某个接口发起请求并接收响应数据。 1.1 Postman工作原理 2.Postman发送请求 2.1 发送GET请求 我们知道GET请求是没用请求体的&#xff0c;所以我们需要将请求参数写在Param…

【MPC控制 - 从ACC到自动驾驶】3 MPC控制器设计原理与参数配置:打造ACC的“最强大脑”

【MPC控制 - 从ACC到自动驾驶】MPC控制器设计原理与参数配置&#xff1a;打造ACC的“最强大脑” 在Day 1&#xff0c;我们认识了ACC自适应巡航和MPC这位“深谋远虑的棋手”。Day 2&#xff0c;我们一起给汽车“画像”&#xff0c;建立了它的纵向动力学模型&#xff0c;并把它翻…