PyTorch读取Cifar数据集并显示图片的实例讲解

  

<强>首先了解一下需要的几个类所在

的包   

 PyTorch读取Cifar数据集并显示图片的实例讲解

        从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数据集并显示图片的实例讲解