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里使用正则表达式的ASCII模式
Nov 02 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
Python if语句知识点用法总结
Jun 10 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
TensorFlow实现模型评估
Sep 07 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
php压缩文件夹最新版
2018/07/18 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
python的几种开发工具介绍
2007/03/07 Python
关于反爬虫的一些简单总结
2017/12/13 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
委托协议书范本
2014/04/22 职场文书
个人收入证明范本
2014/09/18 职场文书
银行求职信模板
2015/03/20 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS