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的Bottle框架的一些使用技巧介绍
Apr 08 Python
python基础之入门必看操作
Jul 26 Python
详解appium+python 启动一个app步骤
Dec 20 Python
Python批量发送post请求的实现代码
May 05 Python
Python格式化输出%s和%d
May 07 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
Django models filter筛选条件详解
Mar 16 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
Python自动化实战之接口请求的实现
May 30 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
PHP可变函数学习小结
2015/11/29 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
jQuery 树形结构的选择器
2010/02/15 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
python比较两个列表大小的方法
2015/07/11 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
python实现自主查询实时天气
2018/06/22 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
python中id函数运行方式
2020/07/03 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
如何掌握自荐信格式呢
2013/11/19 职场文书
青年志愿者活动方案
2014/08/17 职场文书
党员示范岗材料
2014/12/19 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书