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判断质数(素数)的简单方法讲解
May 05 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
Python 通配符删除文件的实例
Apr 24 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
Python xlrd模块导入过程及常用操作
Jun 10 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
Python同时处理多个异常的方法
Jul 28 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 foreach 参数强制类型转换的问题
2010/12/10 PHP
php适配器模式介绍
2012/08/14 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
js实现随机抽奖
2020/03/19 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python字符串匹配算法KMP实例
2015/07/18 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
python http接口自动化脚本详解
2018/01/02 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
煤矿机修工岗位职责
2014/02/07 职场文书
学校食堂标语
2014/10/06 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python