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操作json的方法实例分析
Dec 06 Python
Python 互换字典的键值对实例
Feb 12 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
python实现动态创建类的方法分析
Jun 25 Python
Django 迁移、操作数据库的方法
Aug 02 Python
python实现根据文件格式分类
Oct 31 Python
Django框架安装方法图文详解
Nov 04 Python
python 统计文件中的字符串数目示例
Dec 24 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
python datetime处理时间小结
Apr 16 Python
详解Python yaml模块
Sep 23 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
数据库中排序的对比及使用条件详解
2012/02/23 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
用于table内容排序
2006/07/21 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python登录注册验证功能实现
2018/06/18 Python
安装python及pycharm的教程图解
2019/10/10 Python
Python帮你识破双11的套路
2019/11/11 Python
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
公司JAVA开发面试题
2015/04/02 面试题
企业总经理职责
2014/02/02 职场文书
测量工程专业求职信
2014/02/24 职场文书
学术会议主持词
2014/03/17 职场文书
经济担保书范文
2014/04/02 职场文书
中等生评语大全
2014/05/04 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript