【DataLoader的使用】

一、Dataset与DataLoader

  • Pytorch中的 torch.utils.data 提供了两个抽象类:Dataset 和 Dataloader。Dataset 允许你自定义自己的数据集,用来存储样本及其对应的标签。而 Dataloader 则是在 Dataset 的基础上将其包装为一个可迭代对象,以便我们更方便地(小批量)访问数据集。
  • 通俗来讲,如果说有一家包子店,Dataset负责处理每个包子,什么馅料的,大包子还是小包子。而DataLoader就是相当于服务员,它只负责怎么拿包子,送给客人,不需要关心怎么做包子。
  • 在这里插入图片描述

二、实战

  • 引入必要库
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from torch.utils.data import DataLoader
  • 数据预处理
data_transform = transforms.Compose([
transforms.Resize((256,256)),
transforms.ToTensor()
])

统一图像尺寸(不然会报错),把PIL格式转为张量

  • 创建ImageFolder数据集实例
test_set=torchvision.datasets.ImageFolder(
root=r'D:/My_Work/StudyDeepLearning/day3_code/dataset/test',
transform=data_transform)

指定数据集根目录路径,应用上面的数据转换

  • 创建DataLoader实例
test_loader=DataLoader(
test_set,
batch_size=32,
shuffle=True,
num_workers=0,
drop_last=False)
  1. dataset:指定加载的数据集对象,包含所有样本和标签。
  2. batch_size:设置每批次加载的样本数(如32),影响内存使用和训练效率。
  3. shuffle:是否打乱数据顺序(训练建议True,测试建议False)。
  4. num_workers:数据加载子进程数(0为主进程,多核可设4-8加速加载)。
  5. drop_last:是否丢弃末尾不足batch_size的批次(False保留,True丢弃)。
  6. pin_memory(可选):锁页内存加速GPU传输(GPU训练时建议True)。
  7. persistent_workers(可选):保持子进程存活,减少重复初始化开销(PyTorch 1.7+)。
  • 放到tensorboard测试查看
#取测试集中第一张图片以及label
img,label=test_set[0]
print(img.shape)
print(label)

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值