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基于pygame实现的弹力球效果(附源码)
Nov 11 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
深入理解Django自定义信号(signals)
Oct 15 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
Python如何获取文件指定行的内容
May 27 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
yolov5返回坐标的方法实例
Mar 17 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模拟HTTP认证
2006/10/09 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
DOM 高级编程
2015/05/06 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
python数据结构之二叉树的建立实例
2014/04/29 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
python创建子类的方法分析
2019/11/28 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
what is the difference between ext2 and ext3
2015/08/25 面试题
旅游管理毕业生自荐信
2013/11/05 职场文书
财务会计专业推荐信
2013/11/30 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技