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 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
Python中用memcached来减少数据库查询次数的教程
Apr 07 Python
Flask框架web开发之零基础入门
Dec 10 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
Python接收手机短信的代码整理
Aug 02 Python
python+playwright微软自动化工具的使用
Feb 02 Python
pytorch实现手写数字图片识别
May 20 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 Python
python数字图像处理之对比度与亮度调整示例
Jun 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 base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP图片水印类的封装
2017/07/06 PHP
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
vue-loader教程介绍
2017/06/14 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
对Python3 序列解包详解
2019/02/16 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
汉语专业应届生求职信
2013/10/01 职场文书
法学毕业生自我鉴定
2013/11/08 职场文书
工程部主管岗位职责
2013/11/17 职场文书
道路交通安全实施方案
2014/03/12 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
市场营销专业自荐书
2014/06/10 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
单位计划生育责任书
2015/05/09 职场文书
学籍证明模板
2015/06/18 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers
JS实现简单的九宫格抽奖
2022/06/28 Javascript