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中的pydoc模块和distutils模块
Apr 13 Python
Python中几个比较常见的名词解释
Jul 04 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
使用python实现简单五子棋游戏
Jun 18 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Python自动化测试笔试面试题精选
Mar 12 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
Python Selenium异常处理的实例分析
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
什么是短波收听SWL
2021/03/01 无线电
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
JS求平均值的小例子
2013/11/29 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
BootStrap中
2016/12/10 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
python实现解数独程序代码
2017/04/12 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
css3学习心得分享
2013/08/19 HTML / CSS
给老师的道歉信
2014/01/11 职场文书
高中军训感言600字
2014/03/11 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
Python利用folium实现地图可视化
2021/05/23 Python
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis