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解释器相关安装方法
Oct 12 Python
python将unicode转为str的方法
Jun 21 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
pandas多级分组实现排序的方法
Apr 20 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
详解Python 函数如何重载?
Apr 23 Python
Python面向对象之类的封装操作示例
Jun 08 Python
Pytorch Tensor的索引与切片例子
Aug 18 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
Python下载的11种姿势(小结)
Nov 18 Python
python Zmail模块简介与使用示例
Dec 19 Python
python实现过滤敏感词
May 08 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设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
JavaScript字符串对象
2017/01/14 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
Zabbix实现微信报警功能
2016/10/09 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
PyQt5实现下载进度条效果
2018/04/19 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python count函数使用方法实例解析
2020/03/23 Python
python 如何对logging日志封装
2020/12/02 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
函授本科自我鉴定
2013/11/03 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
师德师风事迹材料
2014/12/20 职场文书
西岭雪山导游词
2015/02/06 职场文书
领导欢送会主持词
2015/07/06 职场文书
2015国庆节宣传语
2015/07/14 职场文书