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中的Classes和Metaclasses详解
Apr 02 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
Python实现购物程序思路及代码
Jul 24 Python
python数据结构之链表的实例讲解
Jul 25 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
python轮询机制控制led实例
May 03 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 Python
基于Python制作一副扑克牌过程详解
Oct 19 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
ThinkPHP路由机制简介
2016/03/23 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
Python实现视频下载功能
2017/03/14 Python
python 类详解及简单实例
2017/03/24 Python
pandas string转dataframe的方法
2018/04/11 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
python能开发游戏吗
2020/06/11 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
学生处主任岗位职责
2013/12/01 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
公司经理聘任书
2014/03/29 职场文书
经营管理策划方案
2014/05/22 职场文书
微电影大赛策划方案
2014/06/05 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
导师鉴定意见
2015/06/05 职场文书
欢送领导祝酒词
2015/08/12 职场文书
医院病假条范文
2015/08/17 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
Java字符串逆序方法详情
2022/03/21 Java/Android
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers
SQL Server 中的事务介绍
2022/05/20 SQL Server
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers