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 相关文章推荐
ptyhon实现sitemap生成示例
Mar 30 Python
python实现批量下载新浪博客的方法
Jun 15 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
python中reader的next用法
Jul 24 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
python通过http下载文件的方法详解
Jul 26 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 Python
神经网络训练采用gpu设置的方式
Mar 03 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 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
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
js原型链原理看图说明
2012/07/07 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python list转dict示例分享
2014/01/28 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
python 实现生成均匀分布的点
2019/12/05 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
学习两会精神心得范文
2014/03/17 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
坎儿井导游词
2015/02/09 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python