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中实现k-means聚类算法详解
Nov 11 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
python主线程捕获子线程的方法
Jun 17 Python
python实现对csv文件的列的内容读取
Jul 04 Python
Python发送邮件测试报告操作实例详解
Dec 08 Python
python解析xml简单示例
Jun 21 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python中JWT用户认证的实现
May 18 Python
Python pymsql模块的使用
Sep 07 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
php实现的ping端口函数实例
2014/11/12 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
axios如何取消重复无用的请求详解
2019/12/15 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
详解Python编程中包的概念与管理
2015/10/16 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
生物科学专业个人求职信范文
2013/12/05 职场文书
给护士表扬信
2014/01/19 职场文书
素质拓展感言
2014/01/29 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
销售个人求职信范文
2014/04/28 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers