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 25 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
详谈python http长连接客户端
Jun 12 Python
python实现壁纸批量下载代码实例
Jan 25 Python
Python实现修改文件内容的方法分析
Mar 25 Python
Face++ API实现手势识别系统设计
Nov 21 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
详解python中__name__的意义以及作用
Aug 07 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
pandas中关于apply+lambda的应用
Feb 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内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
一个简易的js图片轮播效果
2017/07/22 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
vuex 的简单使用
2018/03/22 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
python读取Excel实例详解
2018/08/17 Python
Python中作用域的深入讲解
2018/12/10 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
C++是不是类型安全的
2014/02/18 面试题
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
前台文员岗位职责及工作流程
2013/11/19 职场文书
代办委托书怎样写
2014/04/08 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
一份文言文检讨书
2014/09/13 职场文书
三年级学生评语大全
2014/12/26 职场文书
如何优化vue打包文件过大
2022/04/13 Vue.js
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js