P14.Dataloader的使用

news/2025/11/4 20:36:27/文章来源:https://www.cnblogs.com/Samar-blog/p/19191333

P14.Dataloader的使用

14.1Pytorch官网打开torch.utils.data.DataLoader

image

14.2在pycharm使用DataLoader

image

它返回img和target

image

代码如下:
点击查看代码
import torchvision
from torch.utils.data import DataLoader
#from torch.utils.tensorboard import SummaryWriter
#准备好测试数据集
test_data = torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor())#batch_size=4是指每次从test_data中取其中4个数据集进行打包
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)
输出结果如下(测试数据集中第一张图片及其target):
点击查看代码
D:\anaconda3\envs\pytorch\python.exe D:/DeepLearning/Learn_torch/P14_dataloader.py
torch.Size([3, 32, 32])
3进程已结束,退出代码0

14.3imgs,targets&Dataloader

1.up主总结

image

2.image.shape[i] 的含义

在 Python 中,image.shape 用于获取图像的形状。
它返回一个包含图像维度的元组。对于彩色图像,通常包含三个值:高度、宽度和通道数。
具体含义:
image.shape[0]:表示图像的高度,即垂直尺寸。
image.shape[1]:表示图像的宽度,即水平尺寸。
image.shape[2]:表示图像的通道数,例如RGB图像有三个通道。

3.如何取出dataloader里面的每一个返回:使用for循环

data只是一个变量,相当于i

点击查看代码
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
#准备好测试数据集
test_data = torchvision.datasets.CIFAR10("./dataset",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并在tensorboard打开dataloader时,
#drop_last=True:最后一次剩余16张的数据集,不足64张的,就会被舍弃
#drop_last=False:最后一次剩余16张的数据集,仍然保留(drop_last=False:不丢弃最后一个不足batch的数据)#在tensorboard里面展示
writer = SummaryWriter("dataloader")
# (1)讲解batch_size和drop_last
step = 0
for data in test_loader:imgs,targets = data  #batch_size=4时,每一个data都是4个img和target打包# print(imgs.shape)# print(targets)#print(f"批次 {step}: 包含目标标签 {targets}")#writer.add_images("test_data",imgs,step)writer.add_images("test_data_drop_last", imgs, step)step = step + 1
writer.close()

4.在tensorboard里面展示

image
当滑动不同的step时,图片不一样,如下两图所示:
image
image

5.修改drop_last为True时,再次打开tensorboard

点击查看代码
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
#准备好测试数据集
test_data = torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor())
test_loader = DataLoader(dataset=test_data,batch_size=64,shuffle=True,num_workers=0,drop_last=True)#当batch_size=64并在tensorboard打开dataloader时,
#drop_last=True:最后一次剩余16张的数据集,不足64张的,就会被舍弃
#drop_last=False:最后一次剩余16张的数据集,仍然保留(drop_last=False:不丢弃最后一个不足batch的数据)#在tensorboard里面展示
writer = SummaryWriter("dataloader")
# (1)讲解batch_size和drop_last
step = 0
for data in test_loader:imgs,targets = data  #batch_size=4时,每一个data都是4个img和target打包# print(imgs.shape)# print(targets)#print(f"批次 {step}: 包含目标标签 {targets}")#writer.add_images("test_data",imgs,step)writer.add_images("test_data_drop_last", imgs, step)step = step + 1
writer.close()
输出结果如下:

image

6.加一行代码。再运行以上代码:

print(f"批次 {step}: 包含目标标签 {targets}")
image

7.Shuffle=True/False的使用

(1)代码如下

点击查看代码
for epoch in range(2):  #外层循环:进行2个epoch(训练轮次); epoch 会依次取值 0 和 1step = 0for data in test_loader:   #内层循环:遍历数据加载器中的所有批次; 每个data包含一个batch的图像和标签imgs,targets = data#print(f"批次 {step}: 包含目标标签 {targets}")#writer.add_images("test_data",imgs,step)#writer.add_images("test_data_drop_last", imgs, step)writer.add_images("epoch:{}".format(epoch), imgs, step)step = step + 1
writer.close()

(2)其中,"epoch:{}".format(epoch) 的作用是:

创建一个动态的字符串,把 epoch 的数字值插入到 "epoch:" 后面,这样在TensorBoard中就能清楚区分不同epoch的图像数据。

(3)当Shuffle=True时:

epoch:0和epoch:1的step155的图像的选取顺序不一样

image

(4)④当Shuffle=False时:

epoch:0和epoch:1的step155的图像一模一样

image

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

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

相关文章

docker换源

创建/编辑 /etc/docker/daemon.json {"registry-mirrors": ["https://docker.1ms.run","https://docker-0.unsee.tech","https://docker.m.daocloud.io"],"live-restore…

pypinyin很好用

pypinyin很好用〔https://gitee.com/mirrors/python-pinyin#id4〕 〔https://github.com/mozillazg/pypinyin-dict〕 pip install就噌噌地装上了。 到灵格斯词典网站下载了成语、文化等词典,过几天出个1~2万词的用户…

小九源码-springboot078-java物业管理架构

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

VS 2017 项目文件不完整,缺少预期导入

VS 2017 项目文件不完整,缺少预期导入输入: dotnet --info缺少 .NET Core 2.0 运行时支持。安装:dotnet-runtime-2.0.0-win-x64.exe本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/v…

人性的弱点

抱怨、吵闹,和歇斯底里,所付出的代价。 那种喋喋不休的吵闹,是否对她有了某种帮助?还是把事情弄得更糟? 当你在深夜面对自己时,如果感受到的是充盈而非荒芜,那么这种生存方式就已通过生命的终极考核。

P13.torchvision中的数据集使用

P13.torchvision中的数据集使用13.1Transforms中的类 1.打开pytorch官网 2.找到CIFAR10,这个数据集比较小3.点击图片上红色的CIFAR104.这里的链接就是Pycharm下载到dataset里面的东西13.2CIFAR10数据集的下载与导入 1…

机器学习基础入门(第四篇):无监督学习与聚类途径

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

图上状压 DP

容易发现每年都在考这玩意。每年都不会。 AT_abc213_g [ABC213G] Connectivity 2 显然删边可以变成保留边。 定义状态函数 \(f_s\) 表示保留边,使得 \(s\) 中的点联通的方案数。那么对于 \(k=k0\) 来说,答案应该就是…

k8s删除Terminating状态的命名空间

k8s删除Terminating状态的命名空间原创于 2021-04-07 16:14:02 发布 CC 4.0 BY-SA版权 K8S/Kubernetes文章已被社区收录加入社区 K8S专栏收录该内容5 篇文章订阅专栏在部署Kubesphere时遇到命名空间kubesphere-system处…

【实用脚本】一键安装Oracle19c数据库

【实用脚本】一键安装Oracle19c数据库完整脚本: #!/bin/bash #Oracle 一键安装工具 log_file="/var/log/oracle_install_$(date +%Y%m%d_%H%M%S).log" # 屏幕输出只显示状态提示,日志文件记录完整详细信息…

程序员必逛的9个开发者社区推荐

程序员必逛的9个开发者社区推荐大家好,我是jobleap.cn的小九。 在技术飞速迭代的今天,开发者想要保持竞争力,离不开优质社区的滋养。无论是解决突发Bug、学习前沿技术,还是交流实战经验、寻找合作机会,合适的社区…

CleanMyMac X 4.14.2 dmg 安装教程|Mac 清理软件详细安装步骤

CleanMyMac X 4.14.2 dmg 安装教程|Mac 清理软件详细安装步骤​ CleanMyMac X​ 是一款专门为 ​Mac 电脑​ 设计的 ​系统清理和优化工具一、下载文件 CleanMyMac X 4.14.2.dmg​ 文件安装包下载: https://pan.quar…

java-迭代器

java-迭代器1.迭代器在遍历集合的时候是不依赖索引的 2.迭代器需掌握三个方法: Iteratorit=list.iterator(); while(it.hasNext()){ String str=it.next(); System.out.println(str); } 3.迭代器的四个细节: *如果当…

go语言访问新浪股票(hq.sinajs.cn)

config.go: package main// 股票代码配置 - 简化版本,只包含主要指数和热门股票 var stockSymbols = []string{// 主要指数"sh000001", // 上证指数"sh000016", // 上证50"sh000300", …

优化算法三剑客:SGD、Adam、AdamW的深度对比

优化算法三剑客:SGD、Adam、AdamW的深度对比 1. 引言:模型训练的"导航系统" 想象一下,你正在一个复杂的地形中寻找最低点(最小损失),四周浓雾弥漫(高维空间不可视)。优化算法就是你的GPS导航系统,它…

某大厂跳动面试:计算机网络相关问题解析与总结 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

动手动脑5

https://files.cnblogs.com/files/blogs/847696/动手动脑5.zip?t=1762256201&download=true程序在第5行有一个问题: int i=1, j=0, k; k=i/j; // 这里会在 try-catch 块之前就抛出异常,导致程序终止 正确的异常…

AI元人文:悟空机制与反思——论智能文明的自我超越之道

AI元人文:悟空机制与反思——论智能文明的自我超越之道 引言 “AI元人文”并非一个已完成的理论城堡,而是一个正在生长中的思想丛林。本文所探讨的“悟空机制”,与笔者此前在相关论述中提及的“决策机制”等概念,在…

从零开始搭建你的 Hexo 静态博客(支持 macOS 与 Windows)

从零开始搭建你的 Hexo 静态博客(支持 macOS 与 Windows)本文将手把手教你如何在 macOS 和 Windows 上使用 Hexo 搭建一个属于自己的静态博客,并部署到 GitHub Pages。文末还附带常见问题及解决方案,助你避开“坑”…

cmake也是个恶大的玩意

cmake也是个恶大的玩意/home/user# apt show scons Package: scons Version: 4.4.0+dfsg-1 Priority: optional Section: devel Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org> Installed-Size: 2,671 …