Dataloader()从Dataset当中取数据。可以通过参数设置。
num_wokers是否采用多线程,win系统一般只能设置为0.
drop_last,为true的话,则舍去最后的不能除的数据,为false则不舍去。
DataLoader是把所有img,target打包
输出DataLoader中的数据:
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
test_data = torchvision.datasets.CIFAR10("./datasets", train = False, transform = torchvision.transfoms.ToTensor())
test_loader = DataLoader(dataset = test_data, batch_size = 4, shuffle = True, num_worker = 0, drop_last = False)
# 测试集中第一张图片及其target
img, target = test_data[0]
print(img.shape)
print(target)
# 图片变为张量,可以使用tensorboard进行观察
writer = SummaryWriter("dataloader")
step = 0
for data in test_loader:
# 每次打包的4张batch_size图片,变为一个张量
imgs.targets = data
# print(imgs.shape) (4,3,32,32)
# print(targets) (3,4,7,8)
writer.add_images(test_data", imgs, step)
step = step + 1