dataset数据集,表示数据在哪,可以知道第一个数据是谁
然而,把数据集中的数据加载到神经网络(手)中,怎么取,取多少都是通过设置dataloader的参数来决定。
参数讲解:
batch_size每次抓几张牌
shuffle是否打乱,默认为false不打乱,如果设置为true,就表示每次抓完牌,在下次抓牌前打乱
num_workers采用单进程还是多进程加载数据,=0为只有一个主进程,如果报错BrokenPipeError可以考虑把它设置为0
drop_last假如有100张牌,每次取3张,取33次余1张,舍去不舍去,为True就是这个牌舍去。
代码例子
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())
#command+鼠标左键CIFAR10,观察getitem返回什么,因为等下回返回到test_data[?]中
test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=False)
#测试数据集中第一张图片以及其target
img, target = test_data[0]
print(img.shape)
#输出torch.Size([3, 32, 32])通道数,高*宽
print(target) #输出3
writer = SummaryWriter("dataloader")
step=0
for data in test_loader:
imgs, targets = data #注意这个循环这样data就是test_loader[?]了
#print(imgs.shape)
#输出torch.Size([4, 3, 32, 32]),[个数,通道数,高,宽].个数(因为第9行batch_size=4,每组四个,之后是通道数,高*宽)
#print(targets)
#输出tensor([9, 3, 8, 6]),batch_size=4这里会把每组的合并,四个人出现在一个tensor
#改一下batch_size为64
writer.add_images("test_data",imgs,step)
step=step+1
writer.close()
观察TensorBoard,运行之后,在终端输入
tensorboard --logdir="dataloader"
logdir=什么,依赖于代码中writer = SummaryWriter(“dataloader”)