P15 dataloader的使用
- 在选择是否多进程导入数据时,num_worker设置为0,即为单线程。
- 如果出现这个报错,试试把num_work置为0:
- CIFAR数据集的固定返回内容:
可以运行的代码
"""
author :24nemo
date :2021年07月07日
"""
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())
test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=True)
img, target = test_data[0]
print(img.shape)
print(target)
writer = SummaryWriter("dataloader")
for epoch in range(2):
step = 0
for data in test_loader:
imgs, targets = data
writer.add_images("Epoch: {}".format(epoch), imgs, step)
step = step + 1
writer.close()
2023.7.18补充内容:
- 当不知道在数据集的返回内容时,
Ctrl
点进cifar数据集
的getitem
介绍,里面的return
说的很清楚。上面有一张图,说了这个问题。
import torchvision
from torch.utils.data import DataLoader
test_data = torchvision.datasets.CIFAR10(root="dataset", train=False, transform=torchvision.transforms.ToTensor(), download=True)
test_loader = DataLoader(dataset=test_data, batch_size=4, shuffle=True, num_workers=0, drop_last=False)
img, target = test_data[0]
print(img.shape)
print(target)
for data in test_loader:
img, targets = data
print(img.shape)
print(target)
- 注意
writer.add_images
必须是复数
,并且,加上dataformats="NHWC"
- writer.add_images(‘test_data’, imgs, step, dataformats=“NHWC”)<这个问题遇到了再说>
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
test_data = torchvision.datasets.CIFAR10(root="dataset", train=False, transform=torchvision.transforms.ToTensor(), download=True)
test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=False)
img, target = test_data[0]
print(img.shape)
print(target)
writer = SummaryWriter('dataloader')
step = 0
for data in test_loader:
imgs, targets = data
writer.add_images('test_data', imgs, step, dataformats="NHWC")
step += 1
writer.close()
- 实现了,以前看起来很多困难,现在也不那么难了
- 同样地,打开的时候添加的是绝对路径-
drop_last
的True
与False
:
完整目录