pytorch学习笔记5-dataloader的使用

先上pytorch官网查看dataloader这个类的帮助文档。

shuffle=4的时候,4个4个打包,返回的是一个迭代器。

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

# 准备的测试数据集
test_data = torchvision.datasets.CIFAR10("./P14_dataset", train=False, transform=torchvision.transforms.ToTensor())
# 用dataloader加载数据集
# 参数:dataset即为数据集;batch_size为多少个为一组;shuffle为TRUE时每次加载顺序不同,为FALSE时每次加载数据集的顺序相同
# drop_last为TRUE时最后一组数据不满batch_size时舍去,为FALSE时不舍
test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=True)

# 查看test_data的第一个数据
img, target = test_data[0]
print(img.shape)
print(target)

# 用tensorboard查看图片
# 先创建对象writer
writer = SummaryWriter("P15_dataloader")

# 外层循环为了查看shuffle参数的作用,为TRUE/FALSE每次加载数据顺序不同
# 内层循环从test_loader中取数据(DataLoader返回一个迭代器)
# 注意使用writer.add_images而不是add_image,查看多张图片,Add batched image data to summary.
for epoch in range(2):
    step = 0
    for data in test_loader:
        imgs, targets = data
        writer.add_images("Epoch:{}".format(epoch), imgs, step)
        step += 1

writer.close()

shuffle=False的结果,可以看到加载数据集的顺序一样:

但是这样不能显示所有的step,如上图黑色箭头所指。

为了使tensorboard显示完整的step,使用如下命令:

tensorboard --logdir=P15_dataloader --port=6008 --samples_per_plugin=images=10000

但是这样会导致两次epoch的结果step的数量不同。step都是从0开始,但是epoch0的step以155结束,epoch1的step以311结束,不知道为什么。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>