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 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
Python标准库之itertools库的使用方法
Sep 07 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
Python threading的使用方法解析
Aug 28 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python tkinter和exe打包的方法
Feb 05 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
Python 发送SMTP邮件的简单教程
Jun 24 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
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
firefox中JS读取XML文件
2006/12/21 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python实现图片识别汽车功能
2018/11/30 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
jupyter notebook 重装教程
2020/04/16 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
python全栈开发语法总结
2020/11/22 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
英文自荐信格式
2013/11/28 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
就业推荐表院系意见
2015/06/05 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android