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 02 Python
利用python画一颗心的方法示例
Jan 31 Python
网站渗透常用Python小脚本查询同ip网站
May 08 Python
Python批量查询域名是否被注册过
Jun 21 Python
Python中extend和append的区别讲解
Jan 24 Python
python3.x 生成3维随机数组实例
Nov 28 Python
使用Python发现隐藏的wifi
Mar 04 Python
python 等差数列末项计算方式
May 03 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
用Python进行栅格数据的分区统计和批量提取
May 27 Python
教你漂亮打印Pandas DataFrames和Series
May 29 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 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将文本文件转换csv输出的方法
2014/12/31 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
如何在pycharm中安装第三方包
2020/10/27 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
寒假实习自荐信
2014/01/26 职场文书
英语简历自我评价
2014/01/26 职场文书
消防器材管理制度
2014/01/28 职场文书
打架检讨书500字
2014/01/29 职场文书
认错检讨书
2014/10/02 职场文书
开学典礼致辞
2015/07/29 职场文书
初中美术教学反思
2016/02/17 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
Spring中bean集合注入的方法详解
2022/07/07 Java/Android