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中的fileinput模块的简单实用示例
Jul 09 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
Python高级property属性用法实例分析
Nov 19 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
详解django中Template语言
Feb 22 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
Python爬虫爬取有道实现翻译功能
Nov 27 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 安全过滤函数代码
2011/05/07 PHP
PHP线程的内存回收问题
2016/07/08 PHP
jQuery 选择器理解
2010/03/16 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
简单的js表格操作
2016/09/24 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
python一键去抖音视频水印工具
2018/09/14 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
应届生体育教师自荐信
2013/10/03 职场文书
护理自荐信
2013/10/22 职场文书
门诊挂号室室长岗位职责
2013/11/27 职场文书
大型公益活动策划方案
2014/08/20 职场文书
先进党支部申报材料
2014/12/24 职场文书
小学新教师个人总结
2015/02/05 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers
Java线程的6种状态与生命周期
2022/05/11 Java/Android