pytorch下大型数据集(大型图片)的导入方式


Posted in Python onJanuary 08, 2020

使用torch.utils.data.Dataset类 处理图片数据时,

1. 我们需要定义三个基本的函数,以下是基本流程

class our_datasets(Data.Dataset):
 
  def __init__(self,root,is_resize=False,is_transfrom=False):
    #这里只是个参考。按自己需求写。
    self.root=root
    self.is_resize=is_resize
    self.is_transfrom=is_transfrom
 
    self.imgs_list=...#这里建议保存的是 图片的路径 而不是 图片的数据
    self.labs_list=...
 
  def __getitem__(self, index):
 
    img_path,lab=self.imgs_list[index],self.labs_list[index]
    
    #这里使用PIL库读取图片数据.
    img_data = Image.open(img_path).convert('RGB')
 
    #这里看自己需要,可以不要
    if self.is_resize:
      img_data = img_data.resize((self.is_resize[0], self.is_resize[1]), Image.ANTIALIAS)
    
    #但是数据转换建议加上,很多时候都会用到
    if self.is_transfrom:
      img_data=self.is_transfrom(img_data)
    return img_data,lab
 
  def __len__(self):
 
    return len(self.imgs_list)

这里,我将 读取图片 的步骤 放到 __getitem__ ,是因为 这样放的话,对内存的要求会降低很多,我们只是将数据的路径导入了内存中,当需要读取这个图片数据时,再读取,这样更像是随用随取。如果将这部分放到 __init__ 里面,会一次将 图片数据都加载到 内存中,如果数据量太大,会直接卡死。

2.Dataset 类 返回的数据 类型 是与你读取时的类型一致的。但是在 pytorch使用时,会提示

TypeError: batch must contain tensors, numbers, dicts or lists; found <class 'PIL.Image.Image'>

通常,在数据了不大时,我一般都是在 读取数据后 加一句,转换成 numpy.array类型。

但是,在处理较大型的数据时,这样会很慢。

这时候,我建议 直接使用 torchvision来进行数据转换。

is_transfrom=torchvision.transforms.ToTensor()

将 上例代码 加入 Dataset类中,这样就会快很多。

以上这篇pytorch下大型数据集(大型图片)的导入方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中对列表排序实例
Jan 04 Python
Python压缩和解压缩zip文件
Feb 14 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
总结Python中逻辑运算符的使用
May 13 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
Python文件和流(实例讲解)
Sep 12 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
pybind11和numpy进行交互的方法
Jul 04 Python
python函数的作用域及关键字详解
Aug 20 Python
Django之腾讯云短信的实现
Jun 12 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
Python 实现训练集、测试集随机划分
Jan 08 #Python
Pyecharts绘制全球流向图的示例代码
Jan 08 #Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 #Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 #Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 #Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 #Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 #Python
You might like
PHP 远程关机实现代码
2009/11/10 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php中session使用示例
2014/03/29 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
destoon官方标签大全
2014/06/20 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python实现批量下载文件
2015/05/17 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
.NET面试题:什么是反射
2016/09/30 面试题
护理专科毕业推荐信
2013/11/10 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
公司仓库管理制度
2015/08/04 职场文书
初中生活随笔
2015/08/15 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏