PyTorch 解决Dataset和Dataloader遇到的问题


Posted in Python onJanuary 08, 2020

今天在使用PyTorch中Dataset遇到了一个问题。先看代码

class psDataset(Dataset):
  def __init__(self, x, y, transforms = None):
    super(Dataset, self).__init__()
    self.x = x
    self.y = y
    if transforms == None:
      self.transforms = Compose([Resize((224, 224)), ToTensor()])
    else:
      self.transforms = transforms
    
  def __len__(self):
    return len(self.x)
  
  def __getitem__(self, idx):
    img = Image.open(self.x[idx])
    img = self.transforms(img)    
    return img, torch.tensor([[self.y[idx]]])

结果运行时报错:RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 3 and 1 in dimension 1 at /opt/conda/conda-bld/pytorch_1522182087074/work/torch/lib/TH/generic/THTensorMath.c:2897

Google了一下发现是这样的:读入的图片有些是灰度图(1个通道),绝大多数是RGB图片(3通道),也有些是带透明度的(4通道)

。这导致在读入后最后一个维度(通道数)不一致(可能是1、3或者4)。

Dataloader在制作batch data时,tensor的shape必须一样,就报了这个错误。解决的方法是:img = img.convert(“RGB”)。完

整代码如下:

class psDataset(Dataset):
  def __init__(self, x, y, transforms = None):
    super(Dataset, self).__init__()
    self.x = x
    self.y = y
    if transforms == None:
      self.transforms = Compose([Resize((224, 224)), ToTensor()])
    else:
      self.transforms = transforms
    
  def __len__(self):
    return len(self.x)
  
  def __getitem__(self, idx):
    img = Image.open(self.x[idx])
    img = img.convert("RGB")
    img = self.transforms(img)    
    return img, torch.tensor([[self.y[idx]]])

以上这篇PyTorch 解决Dataset和Dataloader遇到的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
通过python下载FTP上的文件夹的实现代码
Feb 10 Python
详解使用Python处理文件目录的相关方法
Oct 16 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
Django 开发环境配置过程详解
Jul 18 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
python 如何用map()函数创建多线程任务
Apr 07 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 #Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 #Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 #Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 #Python
pyinstaller还原python代码过程图解
Jan 08 #Python
python Tensor和Array对比分析
Jan 08 #Python
Pycharm小白级简单使用教程
Jan 08 #Python
You might like
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
js解决movebox移动问题
2016/03/29 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Django入门使用示例
2017/12/12 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
Python处理PDF与CDF实例
2020/02/26 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
厨房工作人员岗位职责
2013/11/15 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
购房意向书
2014/04/01 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
工程服务质量承诺书
2015/04/29 职场文书
初中毕业感言300字
2015/07/31 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang