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中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
Django验证码的生成与使用示例
May 20 Python
flask中过滤器的使用详解
Aug 01 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
python3 实现口罩抽签的功能
Mar 11 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
python线程里哪种模块比较适合
Aug 02 Python
Django如何实现密码错误报错提醒
Sep 04 Python
pandas抽取行列数据的几种方法
Dec 13 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
从np.random.normal()到正态分布的拟合操作
Jun 02 Python
python井字棋游戏实现人机对战
Apr 28 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
PHP5 安装方法
2006/10/09 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
React快速入门教程
2017/01/17 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
面试常见的js算法题
2017/03/23 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python 私有函数的实例详解
2017/09/11 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Python实现最大子序和的方法示例
2019/07/05 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
DBA的职责都有哪些
2012/05/16 面试题
个人廉洁自律承诺书
2014/03/27 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
元旦晚会开场白
2015/05/29 职场文书
英文投诉信格式
2015/07/03 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis