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文件和目录操作方法大全(含实例)
Mar 12 Python
python中日期和时间格式化输出的方法小结
Mar 19 Python
Python与Java间Socket通信实例代码
Mar 06 Python
python hook监听事件详解
Oct 25 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python网络编程socket实现服务端、客户端操作详解
Mar 24 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
python实现批量转换图片为黑白
Jun 16 Python
详解Python描述符的工作原理
Jun 11 Python
python实现层次聚类的方法
Nov 01 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 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
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
php的memcached客户端memcached
2011/06/14 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
prototype 学习笔记整理
2009/07/17 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
python中如何打包用户自定义模块
2020/09/23 Python
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
中学老师的自我评价
2013/11/07 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
运动会表扬稿
2015/01/16 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android