1.DataLoader简介

  DataLoader 是 PyTorch 中的一个工具类,用于高效加载和批量处理数据集。它支持自动批处理、数据 shuffling 和多进程数据加载,简化了数据预处理和模型训练流程。

2.DataLoader的参数

以上是pytorch官网中关于DataLoader的参数,下面我会讲解常用的参数的类型及作用

(1)dataset

  必填,为要加载数据的数据集

(2)batch_size

  可选,每批加载样本数量,默认1

(3)shuffle

  可选,布尔值,设为True则每个周期开始时打乱数据,默认False

(4)num_workers

  可选,数据加载子进程数量,0表示主进程加载,大于0开启多进程并行加载,能提高大规模数据加载速度

(5)drop_last

  可选,布尔值,数据集样本不能被batch_size整除时,设True丢弃最后不完整批次,默认False

3.DataLoader的使用

第一个代码:

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(), download=False)

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

writer =SummaryWriter("dataloader")
step = 0
for data in test_loader:
    imgs,targets = data
    writer.add_image("test_data", imgs, step)
    step = step + 1

writer.close()

第一个代码遇到的问题 :

表明张量的输入情况和期望的输入格式不匹配

第一个代码问题的解决方法:

其实此代码的问题是一个不起眼的小地方,add_image和add_images的却别

add_image:

  适用于想展示单个图像的情况,比如可视化数据集里的某一张样本图像,或者展示模型在某一次预测输出的单张图像结果

add_images:

  常用于展示一批图像,比如可视化训练或测试集中的多个样本,或者在图像生成任务中展示生成的一批图像结果,方便直观对比多张图像

第二个代码:

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(), download=False)

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

writer =SummaryWriter("../dataloader")
step = 0
for data in test_loader:
    imgs,targets = data
    writer.add_images("test_data", imgs, step)
    step = step + 1

writer.close()

结果:

4.修改参数的结果

 (1)修改batch_size

 

 变为:

遇到的问题:

  在改变batch_size后加载的图像还是4张为一组

解决方法:

  很大可能是目录混淆,将目录改为新的

  注:博主了解了主要的问题,要将tag修改就可以在一个目录下增加图像

(2)修改drop_last 

 

变为:

 

(3) 修改shuffle

 

变为: 

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐