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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
Python神奇的内置函数locals的实例讲解
Feb 22 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
超简单的Python HTTP服务
Jul 22 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
python中的错误如何查看
Jul 08 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 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 Socket配置以及实例的详细介绍
2013/06/13 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
JavaScript中的比较操作符&gt;、=、
2014/12/31 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
Python中常见的数据类型小结
2015/08/29 Python
Python常用算法学习基础教程
2017/04/13 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
利用python画出折线图
2018/07/26 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
python+opencv实现阈值分割
2018/12/26 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
营销与策划应届生求职信
2013/11/04 职场文书
绩效专员岗位职责
2013/12/02 职场文书
户外活动策划方案
2014/03/12 职场文书
企业文化理念标语
2014/06/10 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
2014年预算员工作总结
2014/12/05 职场文书
会议通知格式范文
2015/04/15 职场文书
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL