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正则用法的简单实例
Jun 21 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
Feb 05 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
python实现C4.5决策树算法
Aug 29 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
Python 函数返回值的示例代码
Mar 11 Python
Pandas的read_csv函数参数分析详解
Jul 02 Python
对django views中 request, response的常用操作详解
Jul 17 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
Python 如何查找特定类型文件
Aug 17 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
python音频处理的示例详解
Dec 23 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使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jquery使用经验小结
2015/05/20 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
pandas 如何分割字符的实现方法
2019/07/29 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
python next()和iter()函数原理解析
2020/02/07 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
什么是唯一索引
2015/07/05 面试题
铁路个人事迹材料
2014/01/30 职场文书
安全教育演讲稿
2014/05/09 职场文书
关爱老人标语
2014/06/21 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
优秀员工事迹材料
2014/12/20 职场文书
大学生个人学年总结
2015/02/15 职场文书
三下乡活动心得体会
2016/01/23 职场文书
68句权威创业名言
2019/08/26 职场文书