【深度学习】【入门】DataLoader的使用
PyTorch中的DataLoader是用于高效加载和批处理数据的工具类。文章介绍了DataLoader的常用参数:dataset(必选数据集)、batch_size(批量大小)、shuffle(是否打乱数据)、num_workers(子进程数)和drop_last(是否丢弃不完整批次)。通过CIFAR10数据集示例演示了DataLoader的使用,重点解决了TensorBoard中add_ima
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

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

所有评论(0)