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的web框架中的Model的教程
Apr 29 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
Python 数据结构之旋转链表
Feb 25 Python
python Flask实现restful api service
Dec 04 Python
一百多行python代码实现抢票助手
Sep 25 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
Django中信号signals的简单使用方法
Jul 04 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 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中的fopen()函数用打开文件模式说明
2013/06/20 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
JS实现self的resend
2010/07/22 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
解析vue中的$mount
2017/12/21 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
python3访问字典里的值实例方法
2020/11/18 Python
python压包的概念及实例详解
2021/02/17 Python
python中time tzset()函数实例用法
2021/02/18 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
2014全国两会大学生学习心得体会
2014/03/10 职场文书
影子教师研修方案
2014/06/14 职场文书
学生安全责任书模板
2014/07/25 职场文书
2014年政协工作总结
2014/12/09 职场文书
编写python程序的90条建议
2021/04/14 Python
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python