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 代码性能优化技巧分享
Aug 07 Python
go语言计算两个时间的时间差方法
Mar 13 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
Python算法之图的遍历
Nov 16 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
python 判断网络连通的实现方法
Apr 22 Python
解决python "No module named pip" 的问题
Oct 13 Python
详解Python3 基本数据类型
Apr 19 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
python爬虫工具例举说明
Nov 30 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 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
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP中的表达式简述
2016/05/29 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
JS文本框不能输入空格验证方法
2013/03/19 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
使用python存储网页上的图片实例
2018/05/22 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
程序员求职信
2014/04/16 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
旷课检讨书范文
2014/10/30 职场文书
成本会计岗位职责
2015/02/03 职场文书
教师节倡议书2015
2015/04/27 职场文书
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL