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使用chardet判断字符编码
May 09 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
python中正则表达式的使用方法
Feb 25 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
python实现学员管理系统
Feb 26 Python
Python一行代码实现快速排序的方法
Apr 30 Python
Python函数生成器原理及使用详解
Mar 12 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
德劲1107的电路分析与打磨
2021/03/02 无线电
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
Python基类函数的重载与调用实例分析
2015/01/12 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
css3 transform属性详解
2014/09/30 HTML / CSS
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
婚礼答谢词
2015/01/04 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android