DataLoader的使用

本文详细介绍了PyTorch中DataLoader的基本用法及其参数配置,包括如何加载数据集、设置批量大小、乱序加载等,并通过示例展示了不同配置下的可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

DataLoader是与Dataset对应的。Dataset是数据集,而DataLoader是用来加载数据集的。


一、使用步骤

代码样例及注释

第一段代码:对应成果取第一张和最后一张如图1所示。

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

#准备的测试数据集
test_set=torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor())
test_loader=DataLoader(dataset=test_set,batch_size=64,shuffle=True,num_workers=0,drop_last=False)
#bach_size=64代表每次从test_set中取64个数据进行打包,shuffle=True表示将图片打乱顺序,
# num_workers是表示多线程中几个GPU在跑程序,drop_last代表最后一层的图片有没有被舍弃

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

writer=SummaryWriter("p1")   #用于可视化,p1是将可视化后图片的保存在p1文件夹下

step=0  #每次图片都放在一个新的step里
for data in test_loader:
    imgs,targets=data
    #print(img.shape)
    #print(targets)
    writer.add_images("test_data",imgs,step)  #注意20行,21行的s不能丢,因为这里指的是不止一张图片
    step=step+1
writer.close()

第二段代码:这里设置drop_last=True,指的是去掉了最后一层不足64张图片的16张图片,对应的成果取最后一张如图2所示。

第三段代码:若加载图片限制为进行两轮,且乱序排列图片,舍去最后不足以64张图片时,对应的代码及注释如下,对应的成果如图3所示。

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

#准备的测试数据集
test_set=torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor())
test_loader=DataLoader(dataset=test_set,batch_size=64,shuffle=True,num_workers=0,drop_last=True)
#bach_size=64代表每次从test_set中取64个数据进行打包,shuffle=True表示将图片打乱顺序,
# num_workers是表示多线程中几个GPU在跑程序,drop_last代表最后一层的图片有没有被舍弃

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

writer=SummaryWriter("p1")   #用于可视化,p1是将可视化后图片的保存在p1文件夹下

for epoch in range(2): #测试两轮,第0轮和第一轮
    step = 0  # 每次图片都放在一个新的step里
    for data in test_loader:
        imgs,targets=data
    #print(img.shape)
    #print(targets)
    writer.add_images("Epoch:{}".format(epoch),imgs,step)  #注意21行,24行的s不能丢,因为这里指的是不止一张图片
    step=step+1
writer.close()

第四段代码:在第三段代码的基础上,若设置shuffle=False,代表对图片不进行乱序排列,那么这两轮加载图片时,展示的成果将一模一样。如图4所示。

二、成果展示

图1

图2 

 图3

 

 

 图4


总结

 以上涉及的内容,参照b站up主,“我是土堆” 。这里只是将自己所学内容进行整理并分享。

DataLoader的使用_哔哩哔哩_bilibili



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值