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 xlrd读取excel日期类型的2种方法
Apr 28 Python
Ubuntu下安装PyV8
Mar 13 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
Python装饰器模式定义与用法分析
Aug 06 Python
Django用户认证系统 User对象解析
Aug 02 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
Python: 传递列表副本方式
Dec 19 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python运行脚本文件的三种方法实例
Jun 25 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 Xdebug的安装与使用详解
2013/06/20 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
Python中的闭包实例详解
2014/08/29 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
Nike瑞士官网:Nike CH
2021/01/18 全球购物
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python