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检测QQ在线状态的方法
May 09 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
安装python3的时候就是输入python3死活没有反应的解决方法
Jan 24 Python
pandas 选择某几列的方法
Jul 03 Python
python tornado修改log输出方式
Nov 18 Python
python psutil监控进程实例
Dec 17 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
Django中FilePathField字段的用法
May 21 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
python如何查找列表中元素的位置
May 30 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统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
点击进行复制的JS代码实例
2013/08/23 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
微信小程序签到功能
2018/10/31 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
Python 模块EasyGui详细介绍
2017/02/19 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
Django中提示消息messages的设置方式
2019/11/15 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
Python实现自动装机功能案例分析
2020/10/22 Python
英国女性时尚品牌:Apricot
2018/12/04 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
董事长秘书工作职责
2014/06/10 职场文书
关于美容院的活动方案
2014/08/14 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL