【PyTorch】Torchvision

news2024/11/25 18:59:02

文章目录

  • 三、Torchvision
    • 1、Dataset
    • 2、DataLoader
      • 2.1 test_data
      • 2.2 test_loader
      • 2.3 drop_last
      • 2.4 shuffle

三、Torchvision

PyTorch官网:https://pytorch.org

1、Dataset

数据集描述:https://www.cs.toronto.edu/~kriz/cifar.html

数据集使用说明:

CIFAR10数据集:https://pytorch.org/vision/stable/generated/torchvision.datasets.CIFAR10.html#torchvision.datasets.CIFAR10

参数说明:

  • root:数据集存放位置
  • train:True(训练集)、False(测试集)
  • transform:变化
  • target_transform:target变化
  • download:是否下载

基本使用:

import torchvision

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

print(test_set[0])
print(test_set.classes)

img, target = test_set[0]
print(img)
print(target)
print(test_set.classes[target])
img.show()
Files already downloaded and verified
Files already downloaded and verified
(<PIL.Image.Image image mode=RGB size=32x32 at 0x23CD61F0220>, 3)
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
<PIL.Image.Image image mode=RGB size=32x32 at 0x23CD61F00D0>
3
cat

转为Tensor类型: 并使用TensorBoard显示

import torchvision
from torch.utils.tensorboard import SummaryWriter

dataset_transform = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])

train_set = torchvision.datasets.CIFAR10(root="../data", transform=dataset_transform, train=True, download=True)
test_set = torchvision.datasets.CIFAR10(root="../data", transform=dataset_transform, train=False, download=True)

writer = SummaryWriter("logs")
for i in range(10):
    img, target = test_set[i]
    writer.add_image("test_set", img, i)

writer.close()

2、DataLoader

介绍:https://pytorch.org/docs/stable/data.html?highlight=dataloader#torch.utils.data.DataLoader

参数说明:

  • batch_size:每批要加载多少个样品(默认:1)
  • shuffle:True(重新洗牌),(默认:False)
  • num_workers:使用多少个子进程来加载数据,(默认:0 表示主进程)
  • drop_last:是否舍去最后(除不尽的)

2.1 test_data

import torchvision
from torch.utils.data import DataLoader

# 准备测试集
test_data = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor())

# 测试集第一张图片及target
img, target = test_data[0]
print(img.shape)
print(target)
torch.Size([3, 32, 32]) # 3通道 32 * 32
3

2.2 test_loader

import torchvision
from torch.utils.data import DataLoader

# 准备测试集
test_data = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor())

test_loader = DataLoader(dataset=test_data, batch_size=4, shuffle=True, num_workers=0, drop_last=False)

# 测试集第一张图片及target
# img, target = test_data[0]
# print(img.shape)
# print(target)

# test_loader
for data in test_loader:
    imgs, targets = data
    print(imgs.shape)
    print(targets)
torch.Size([4, 3, 32, 32]) # 4张 3通道 32 * 32
tensor([1, 2, 0, 8]) # 4张图片的target糅合在一起
...
...

注意:target[1, 2, 0, 8]并不是按序采样,而是随机的!

2.3 drop_last

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备测试集
test_data = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor())

test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=False)

# batch_size=64
writer = SummaryWriter("logs")
step = 0
for data in test_loader:
    imgs, targets = data
    writer.add_images("test_data", imgs, step)
    step += 1

writer.close()

注意:最后一次采样只有16张图像,这是因为参数drop_last=False

当不满足每一次都取一定值的图片时,可以显示真实剩下的或者直接舍去(drop_last=True)。

当我们设置为drop_last=True时,就会舍去最后一组采样:

2.4 shuffle

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备测试集
test_data = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor())

test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=False, num_workers=0, drop_last=True)

# shuffle=False
writer = SummaryWriter("logs")

for epoch in range(2):
    step = 0
    for data in test_loader:
        imgs, targets = data
        writer.add_images("Epoch:{}".format(epoch), imgs, step)
        step += 1

writer.close()

注意:两者采样完全相同,如果想要 “洗牌”,应设置shuffle=True

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

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

相关文章

SpringCloud案例day05

SpringCloud Gateway网关 案例1&#xff1a;环境搭建 可以复制 Service-A9001 改成Gateway-C9009 》1&#xff1a;创建工程导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artif…

汽车全景视频制作让企业营销传播无界长久

全景视频制作 全景VR视频&#xff0c;顾名思义就是能够使我们看到拍摄点周围360景致的视频。传统视频拍摄受限于镜头视角&#xff0c;所以我们只能看到镜头前方180内的景物。而全景VR视频能够看到周围360以及上下180各个角度的一切景物&#xff0c;用户能够更加多方位的观赏视频…

可观测性-Event-指标事件采样策略总结

文章目录前言采样的几种策略简单随机采样周期性完整采样基于条件的采样前言 在默认情况下&#xff0c;系统会采集所有追踪&#xff08;Tracing&#xff09;的数据。但是如果系统比较复杂&#xff0c;采集的端点比较多的时候&#xff0c;对存储压力比较大&#xff0c;这个时候我…

Educational Codeforces Round 135 (Rated for Div. 2)

A:思维 题意&#xff1a;箱子里有N个颜色的球&#xff08;用下标代表不同的颜色&#xff09;&#xff0c;每个颜色的球对应一定的数量&#xff0c;你会进行多次拿球的操作&#xff0c;当箱子里的球颜色一致时&#xff0c;你就不能再拿球了&#xff0c;问最后颜色一致的球是哪个…

免疫抑制作用的转录抑制分子

科研人员发现&#xff1a;社交失败导致了小鼠焦虑行为&#xff0c;进而抑制了化疗药物的治疗过程&#xff0c;加速了肿瘤的发展。在正常小鼠中&#xff0c;人为给予外源性糖皮质激素会使得 Tsc22d3(一个具有很强免疫抑制作用的转录抑制分子)在肿瘤浸润树突细胞(TIDC)的表达上调…

Q3营收同比翻三倍,踩猛“油门”零跑必将领跑?

近日&#xff0c;零跑汽车公布三季度财报。从财报成绩来看&#xff0c;有喜有忧。喜的是销量营收同比环比均出现大幅度增长&#xff0c;忧的是亏损同比扩大86.11%。 营收同比猛增398.5%&#xff0c;销量能否穿越迷雾&#xff1f; 详细来看&#xff0c;三季度零跑汽车销量3.56万…

【附源码】计算机毕业设计JAVA旅行指南网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

HOOPS学习笔记

Hoops简介 HOOPS Visualize由一套集成的组件组成&#xff0c;可快速开发高性能设计、可视化和工程应用程序。HOOPS 3DF在每个组件中保持平台独立性&#xff0c;在Windows、Linux和Mac OS X上提供跨平台解决方案。 HOOPS Visualize包含如下组件&#xff1a; 1.HOOPS/3dGS - HO…

vue+express+mysql+elementUI实现前后端交互增删改查

简介&#xff1a;使用 Vue koa koa2-router mySql elementUI实现前后端交互 页面整体效果图&#xff1a; 编辑页面&#xff1a; 添加页面&#xff1a; 删除操作&#xff1a; 数据库客户端使用Navicat for mysql 当然你需要下载安装 在数据库新建 stuInfo 表和表结构 st…

Github点赞接近 100k 的Spring Boot学习教程+实战项目推荐

很明显的一个现象&#xff0c;除了一些老项目&#xff0c;现在 Java 后端项目基本都是基于 Spring Boot 进行开发&#xff0c;毕竟它这么好用以及天然微服务友好。不夸张的说&#xff0c;Spring Boot 是 Java 后端领域最最最重要的技术之一&#xff0c;熟练掌握它对于 Java 程序…

SpringBoot-快速入门

目录 SpringBoot 概念 Spring缺点 SpringBoot 功能 快速入门案例&#xff1a;需求 案例&#xff1a;实现步骤 示例 小结 快速构建SpringBoot工程 SpringBoot 概念 SpringBoot提供了一种快速使用Spring的方式基于约定优于配置的思想&#xff0c;可以让开发人员不必在配置…

QML地图Map中使用QPainterPath,并显示任意点经纬度位置

QML地图Map中提供了供绘制图形的组件&#xff0c;例如MapPolyline&#xff0c;MapCircle等&#xff0c;但是这些组件在绘制复杂轨迹时就显得功能不够全面&#xff0c;因此我将QPainterPath在Map中进行使用并进行绘制&#xff0c;并使用C和Qml中的函数进行相互调用计算获取点屏幕…

macOS 的「预览」有几种用法

如果要评选 macOS 最低调的 App &#xff0c;「预览」可能就会位列其中之一。「预览」和 macOS 结合异常紧密&#xff0c;甚至让人都会遗忘它还是个 App。毕竟大多数的时候&#xff0c;提到「预览」就会想到操作系统的一部分。而实际上&#xff0c;「预览」那「瘦小」的身躯之内…

Unity3D赛车游戏+脚本基础

前言 游戏对象实例化 Scenes游戏场景 GameObject游戏对象 Component组件 Component使用方法 预制体 Unity事件函数 Instantiate():实例化对象 什么是Time.deltaTime Transform的移动&#xff0c;旋转和缩放 实战:赛车游戏 运行演示 具体步骤 游戏打包流程 前言 …

智慧教育解决方案-最新全套文件

智慧教育解决方案-最新全套文件一、建设背景二、思路架构三、建设方案四、获取 - 智慧教育全套最新解决方案合集一、建设背景 目前数字化校园现状&#xff1a; 各自为政 分散建设 各个学校组成的业务系统、网站五花八门&#xff0c;形式多样。形式单一 功能简单 学校网站主要…

为什么同一表情‘‘.length==5但‘‘.length==4?本文带你深入理解 String Unicode UTF8 UTF16

背景 为什么同样是男人&#xff0c;但有的男人&#x1f9d4;‍♂️.length 5&#xff0c;有的男人&#x1f9d4;‍♂.length 4呢&#xff1f; 这二者都是JS中的字符串&#xff0c;要理解本质原因&#xff0c;你需要明白JS中字符串的本质&#xff0c;你需要理解 String Unic…

vlan trunk stp攻防

目录 一、VLAN、Trunk面临的安全风险 trunk干道攻击DTP攻击&#xff08;思科特有&#xff09; VLAN跳跃攻击 STP根桥攻击 二、攻击防护 一、VLAN、Trunk面临的安全风险 trunk干道攻击DTP攻击&#xff08;思科特有&#xff09; 在华为设备中trunk链路是手工指定的&#xf…

A-LEVEL Chemistry考点分析

A-LEVEL化学其实不是一门很难的科目&#xff0c;并没有太多的内容&#xff0c;虽说包含十几章的内容但其实每章都是相互关联&#xff0c;一通百通&#xff0c;掌握元素周期表的实质&#xff0c;基本上就没有什么问题了&#xff0c;重在理解&#xff01;知识点多而不碎&#xff…

如何一站式管理固定资产的全生命周期?

目前很多企业还在沿用之前传统的Excel表格来管理和盘点固定资产&#xff0c;不但加大了企业固定资产管理员的工作量&#xff0c;而且在实际的操作过程中容易出现错登记、漏盘点、无法查询操作履历等各种小插曲。而且随着企业固定资产数量、种类、分支机构以及人员的不断增加&am…

juc之常用4大并发工具类 (四)

CountDownLatch: 减少计数CyclicBarrier: 循环栅栏Semaphore: 信号量ExChanger: 交换器 文章目录1.CountDownLatch2.CyclicBarrier3.Semaphore4.Exchanger1.CountDownLatch CountDownLatch,俗称闭锁,作用是类似加强版的 Join,是让一组线程等待其他的线程完成工作以后才执行 就…