提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
DataLoader是与Dataset对应的。Dataset是数据集,而DataLoader是用来加载数据集的。
一、使用步骤
代码样例及注释
第一段代码:对应成果取第一张和最后一张如图1所示。
import torchvision from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter #准备的测试数据集 test_set=torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor()) test_loader=DataLoader(dataset=test_set,batch_size=64,shuffle=True,num_workers=0,drop_last=False) #bach_size=64代表每次从test_set中取64个数据进行打包,shuffle=True表示将图片打乱顺序, # num_workers是表示多线程中几个GPU在跑程序,drop_last代表最后一层的图片有没有被舍弃 #测试数据集中第一张图片及target img,target=test_set[0] print(img.shape) print(target) writer=SummaryWriter("p1") #用于可视化,p1是将可视化后图片的保存在p1文件夹下 step=0 #每次图片都放在一个新的step里 for data in test_loader: imgs,targets=data #print(img.shape) #print(targets) writer.add_images("test_data",imgs,step) #注意20行,21行的s不能丢,因为这里指的是不止一张图片 step=step+1 writer.close()
第二段代码:这里设置drop_last=True,指的是去掉了最后一层不足64张图片的16张图片,对应的成果取最后一张如图2所示。
第三段代码:若加载图片限制为进行两轮,且乱序排列图片,舍去最后不足以64张图片时,对应的代码及注释如下,对应的成果如图3所示。
import torchvision from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter #准备的测试数据集 test_set=torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor()) test_loader=DataLoader(dataset=test_set,batch_size=64,shuffle=True,num_workers=0,drop_last=True) #bach_size=64代表每次从test_set中取64个数据进行打包,shuffle=True表示将图片打乱顺序, # num_workers是表示多线程中几个GPU在跑程序,drop_last代表最后一层的图片有没有被舍弃 #测试数据集中第一张图片及target img,target=test_set[0] print(img.shape) print(target) writer=SummaryWriter("p1") #用于可视化,p1是将可视化后图片的保存在p1文件夹下 for epoch in range(2): #测试两轮,第0轮和第一轮 step = 0 # 每次图片都放在一个新的step里 for data in test_loader: imgs,targets=data #print(img.shape) #print(targets) writer.add_images("Epoch:{}".format(epoch),imgs,step) #注意21行,24行的s不能丢,因为这里指的是不止一张图片 step=step+1 writer.close()
第四段代码:在第三段代码的基础上,若设置shuffle=False,代表对图片不进行乱序排列,那么这两轮加载图片时,展示的成果将一模一样。如图4所示。
二、成果展示
图1
图2
图3
图4
总结
以上涉及的内容,参照b站up主,“我是土堆” 。这里只是将自己所学内容进行整理并分享。