尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

P14.Dataloader的使用

P14.Dataloader的使用
📅 发布时间:2026/6/18 15:10:11

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

相关新闻

  • 小九源码-springboot078-java物业管理架构
  • 图上状压 DP
  • 【实用脚本】一键安装Oracle19c数据库

最新新闻

  • 金价暴涨下的“避坑指南”:乐平人手上的闲置黄金,这样卖才能多赚30%! - 衡金阁
  • 2026上海本地全屋定制爱格授权更新收录,四家官方认证门店实地走访记录 - 设计本
  • 闲置黄金出售全攻略,避开回收套路,按实时金价高价变现 - 奢品小当家
  • 上海冉声汽车音响:解锁音响改装3大黄金法则,让爱车秒变移动音乐厅,理想原车音响升级/汽车音响改装,音响改装旗舰店有哪些 - 音响改装门店分享
  • 鲜花商城系统-python+Flask
  • 技术筑基,场景深耕:湖南格讯定制装修行业GEO营销落地实践总结 (3) - 技术瞭望台

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号