<强>首先了解一下需要的几个类所在强>
的包
从torchvision进口变换,数据集作为ds 从torch.utils。数据导入DataLoader 进口matplotlib。pyplot作为plt 进口numpy np #变换=transforms.Compose是把一系列图片操作组合起来,比如减去像素均值等。 # DataLoader读入的数据类型是PIL.Image #这里对图片不做任何处理,仅仅是把PIL.Image转换为torch.FloatTensor,从而可以被pytorch计算 变换=transforms.Compose ( ( transforms.ToTensor () ] ) >之前
torch.utils.data.Dataset是一个抽象类,CIFAR100是它的一个实例化子类
=True训练,读取训练集;火车=False,读取测试集
下载=False,不下载。如果为真,则先检查根下有无该数据集,如果没有就先下载。
train_set=ds.CIFAR100(根='。”,火车=True,变换=变换,target_transform=没有下载=True)
=train_set data_loader=DataLoader(数据集 batch_size=1, 洗牌=False, num_workers=2) # #生成torch.utils.data.DataLoaderIter # #不过DataLoaderIter它会被DataLoader自动创建并且调用,我们用不到 # data_iter=iter (data_loader) #图片,标签=next (data_iter)
<强> 1)使用的……在……循环读取数据的时候,会自动调用DataLoader里的__next__()函数强>
而且只能对张量实例进行迭代,所以之前的变换必须最后加一个transforms.ToTensor ()
<强> 2)显示图片有两种方式:Image.show()和plt.imshow (ndarray) 强>
Image.show ():
通过transforms.ToPILImage()把FloatTensor转化图像为
plt.imshow (ndarray):
通过FloatTensor.numpy()转化为ndarray,再调用plt.imshow ()
to_pil_image=transforms.ToPILImage () 问=0 的形象,在data_loader标签: 如果cnt>=3: #只显示3张图片 打破 打印(标签)#显示标签 #方法1:Image.show () # transforms.ToPILImage()中有一句 # npimg=np.transpose (pic.numpy (), (1 2 0)) #因此图片只能是三维张量,所以要用形象[0]消去批那一维 img=to_pil_image(图片[0]) img.show () #方法2:plt.imshow (ndarray) img图像[0]=# plt.imshow()只能接受三维张量,所以也要用形象[0]消去批那一维 img=img.numpy () # FloatTensor转为ndarray img=np。置(img(1 2 0)) #把通道那一维放到最后 #显示图片 plt.imshow (img) plt.show () 问+=1
第一个参数是要转置的图片;
第二个是形状。比如一个ndarray是(渠道、高度、宽度),如果给第二个参数(高度、宽度、频道),就会把第0维频道整个搬到最后。
以上这篇PyTorch读取Cifar数据集并显示图片的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
PyTorch读取Cifar数据集并显示图片的实例讲解