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画图学习入门教程
Jul 01 Python
微信跳一跳自动运行python脚本
Jan 08 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 Python
pytorch 一行代码查看网络参数总量的实现
May 12 Python
python基础入门之普通操作与函数(三)
Jun 13 Python
python 对图片进行简单的处理
Jun 23 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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
django文档学习之applications使用详解
2018/01/29 Python
python opencv实现运动检测
2018/07/10 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
Python timeit模块原理及使用方法
2020/10/10 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
学校门卫岗位职责
2014/03/16 职场文书
挂职学习心得体会
2014/09/09 职场文书
学生吸烟检讨书
2014/09/14 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python