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 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
基于python进行桶排序与基数排序的总结
May 29 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
在Django中实现添加user到group并查看
Nov 18 Python
Python time库基本使用方法分析
Dec 13 Python
python日期与时间戳的各种转换示例
Feb 12 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
Python如何进行时间处理
Aug 06 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
Python中快速掌握Data Frame的常用操作
Mar 31 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
非常重要的php正则表达式详解
2016/01/04 PHP
php判断目录存在的简单方法
2019/09/26 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
详解webpack 多页面/入口支持&公共组件单独打包
2017/06/29 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
名片管理系统python版
2018/01/11 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Django nginx配置实现过程详解
2020/09/10 Python
python map比for循环快在哪
2020/09/21 Python
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
产假请假条
2014/04/10 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
先进党支部事迹材料
2014/12/24 职场文书
教导处教学工作总结
2015/08/12 职场文书
交通安全主题班会
2015/08/12 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python