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 27 Python
Python socket编程实例详解
May 27 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
python用plt画图时,cmp设置方法
Dec 13 Python
代码详解django中数据库设置
Jan 28 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
python django model联合主键的例子
Aug 06 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 Python
python基础之while循环语句的使用
Apr 20 Python
Python面向对象编程之类的概念
Nov 01 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
建立动态的WML站点(三)
2006/10/09 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
用C++封装MySQL的API的教程
2015/05/06 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python交互界面的退出方法
2019/02/16 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
pytorch实现查看当前学习率
2020/06/24 Python
环境工程专业个人求职信
2013/12/05 职场文书
给老师的道歉信
2014/01/11 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
个人租房协议书
2014/11/28 职场文书
初中物理教学反思
2016/02/19 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
Redis 哨兵机制及配置实现
2022/03/25 Redis
python小型的音频操作库mp3Play
2022/04/24 Python