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


Posted in Python onJuly 27, 2018

首先了解一下需要的几个类所在的package

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

from torchvision import transforms, datasets as ds
from torch.utils.data import DataLoader
import matplotlib.pyplot as plt
import numpy as np

#transform = transforms.Compose是把一系列图片操作组合起来,比如减去像素均值等。
#DataLoader读入的数据类型是PIL.Image
#这里对图片不做任何处理,仅仅是把PIL.Image转换为torch.FloatTensor,从而可以被pytorch计算
transform = transforms.Compose(
 [
 transforms.ToTensor()
 ]
)

Step 1,得到torch.utils.data.Dataset实例。

torch.utils.data.Dataset是一个抽象类,CIFAR100是它的一个实例化子类

train=True,读取训练集;train=False,读取测试集

download=False,不下载。如果为True,则先检查root下有无该数据集,如果没有就先下载。

train_set = ds.CIFAR100(root='.', train=True, transform=transform, target_transform=None, download=True)

Step 2,把Dataset封装成torch.utils.data.DataLoader

data_loader = DataLoader(dataset=train_set,
  batch_size=1,
  shuffle=False,
  num_workers=2)


# # 生成torch.utils.data.DataLoaderIter
# # 不过DataLoaderIter它会被DataLoader自动创建并且调用,我们用不到
# data_iter = iter(data_loader)
# images, labels = next(data_iter)

step 3,从DataLoader里读取数据,并将图片显示出来。

注意:

1)使用for...in...循环读取数据的时候,会自动调用DataLoader里的__next__()函数

而且只能对Tensor实例进行迭代,所以之前的transforms必须最后加一个transforms.ToTensor()

2)显示图片有两种方式:Image.show()和plt.imshow(ndarray)

Image.show():

通过transforms.ToPILImage()把FloatTensor转化为Image

plt.imshow(ndarray):

通过FloatTensor.numpy()转化为ndarray,再调用plt.imshow()

to_pil_image = transforms.ToPILImage()
cnt = 0
for image,label in data_loader:
 if cnt>=3: # 只显示3张图片
 break
 print(label) # 显示label

 # 方法1:Image.show()
 # transforms.ToPILImage()中有一句
 # npimg = np.transpose(pic.numpy(), (1, 2, 0))
 # 因此pic只能是3-D Tensor,所以要用image[0]消去batch那一维
 img = to_pil_image(image[0])
 img.show()

 # 方法2:plt.imshow(ndarray)
 img = image[0] # plt.imshow()只能接受3-D Tensor,所以也要用image[0]消去batch那一维
 img = img.numpy() # FloatTensor转为ndarray
 img = np.transpose(img, (1,2,0)) # 把channel那一维放到最后

 # 显示图片
 plt.imshow(img)
 plt.show()

 cnt += 1

另外补一句np.transpose()的用法。

第一个参数是要transpose的图片;

第二个是shape。比如一个ndarray是(channel, height, width),如果给第二个参数(height, width,channel),就会把第0维channel整个搬到最后。

以上这篇PyTorch读取Cifar数据集并显示图片的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
Python使用filetype精确判断文件类型
Jul 02 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
Python模拟随机游走图形效果示例
Feb 06 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python-itchat 获取微信群用户信息的实例
Feb 21 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
Python中常用的高阶函数实例详解
Feb 21 Python
python中time tzset()函数实例用法
Feb 18 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 Python
pytorch 数据集图片显示方法
Jul 26 #Python
mac安装pytorch及系统的numpy更新方法
Jul 26 #Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 #Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 #Python
pytorch中tensor的合并与截取方法
Jul 26 #Python
Python爬虫框架Scrapy常用命令总结
Jul 26 #Python
Python退火算法在高次方程的应用
Jul 26 #Python
You might like
用PHP生成自己的LOG文件
2006/10/09 PHP
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
php部分常见问题总结
2008/03/27 PHP
php批量上传的实现代码
2013/06/09 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
PHP7 其他修改
2021/03/09 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
说一说Python logging
2016/04/15 Python
python处理xml文件的方法小结
2017/05/02 Python
Python实现简单的语音识别系统
2017/12/13 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
销售员自我评价怎么写
2013/09/19 职场文书
工商学院毕业生自荐信
2013/11/12 职场文书
干部选拔任用方案
2014/05/26 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
简爱读书笔记
2015/06/26 职场文书
党员干部学习心得体会
2016/01/23 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
Python中第三方库Faker的使用详解
2022/04/02 Python
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL