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 七种邮件内容发送方法实例
Apr 22 Python
使用优化器来提升Python程序的执行效率的教程
Apr 02 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
Python Socket编程之多线程聊天室
Jul 28 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
pytest中文文档之编写断言
Sep 12 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 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下保存远程图片到本地的办法
2010/08/08 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
python实现查询IP地址所在地
2015/03/29 Python
django之常用命令详解
2016/06/30 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Selenium定位元素操作示例
2018/08/10 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
外企C语言笔试题
2013/11/10 面试题
医药代表个人的求职信分享
2013/12/08 职场文书
关于毕业的广播稿
2014/01/10 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
预备党员个人总结
2015/02/14 职场文书
博士导师推荐信
2015/03/25 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS