DataLoader

DataLoader可以从Dataset中取数据,是一个加载器,可以将Dataset看做一副扑克牌,Dataset就是从这一副里面取出任意张牌,怎么取,取多少张都是由DataLoader来决定的
在这里插入图片描述

DataLoader的参数很多,但大多都是有默认值的,其中第一个dataset没有默认值,也就是我们自己决定用哪个Dataset,batch_data决定抓牌的时候抓几张,shuffle为true表示重新洗牌,就是打乱顺序,num_workers用来选择进程数,如果是0表示只用主进程加载,drop_last用来决定最后的牌取不取,比如一个100张,我们选择每次取3张,那100%3=1,最后一张牌取不取?当drop_last为true表示不取
在这里插入图片描述
在这里插入图片描述

代码示例1:

import torchvision
from torch.utils.data import DataLoader

#准备的测试数据集
test_data = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor())

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:
    imgs, targets = data
    print(imgs.shape)
    print(targets)

在这里插入图片描述
代码示例2

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=False)

#测试集中的第一张图片
img, target = test_data[0]
print(img.shape)
print(target)

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

writer.close()

运行结果
在这里插入图片描述

Logo

一站式 AI 云服务平台

更多推荐