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 相关文章推荐
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
Python numpy 点数组去重的实例
Apr 18 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
用django设置session过期时间的方法解析
Aug 05 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
Python ini文件常用操作方法解析
Apr 26 Python
python 如何对logging日志封装
Dec 02 Python
用python读取xlsx文件
Dec 17 Python
python 三边测量定位的实现代码
Apr 22 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
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
vue 实现图片懒加载功能
2020/12/31 Vue.js
python图像处理之反色实现方法
2015/05/30 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python内存动态分配过程详解
2019/07/15 Python
Python使用type动态创建类操作示例
2020/02/29 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
工程专业求职自荐书范文
2014/02/18 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
创先争优活动心得体会
2014/09/04 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2014年销售部工作总结
2014/12/01 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
实现GO语言对数组切片去重
2022/04/20 Golang
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技