【问题标题】:Pytorch dataloader Transforms tensor errorPytorch dataloader 转换张量错误
【发布时间】:2020-07-15 13:39:15
【问题描述】:

[无法访问 pytorch 数据加载器值以供使用 TypeError: default_collat​​e: batch 必须包含张量、numpy 数组、数字、dicts 或列表;找到对象

可以通过在 kaggle 上运行 https://jovian.ml/pravin-bnmit/cxr/ 来重现错误

【问题讨论】:

  • 我想如果你分享更多的代码会很有帮助。真的很难猜出问题出在哪里。我的猜测是图像没有被转换为张量(信息:pytorch.org/docs/stable/torchvision/transforms.html
  • 我已添加代码,笔记本可在jovian.ml/pravin-bnmit/cxr获得
  • 笔记本中的错误与您在此处共享的图像中的错误不同。 ToTensor 解决了你的问题吗? (数据加载器不可下标,您可以使用next(dl) 加载下一批或干脆for data in dl: do something with data
  • @VictorZuanazzi 当我尝试从 dl 访问数据时,for 循环出现错误这给出了上面显示的错误您可以检查我已更新的笔记本

标签: python pytorch image-preprocessing dataloader


【解决方案1】:

为什么不在 getitem() 方法内的转换之前尝试img = img.resize((1024, 1024))

def __getitem__(self, idx):
    row = self.df.loc[idx]
    img_id, img_label = row['Image Index'], row['disease_vec']
    img_fname = row['path']
    img = Image.open(img_fname)
    img = img.resize((1024, 1024))
    if self.transform:
        img = self.transform(img)
    return img, img_label

【讨论】:

  • 问题是退出数据集类时返回一个元组。这是一个对象,for 循环想要访问它无法导致错误的 2 个张量
猜你喜欢
  • 2021-10-11
  • 2019-07-20
  • 2022-10-17
  • 2019-07-29
  • 2020-08-05
  • 2019-11-06
  • 2020-06-10
  • 2021-11-25
相关资源
最近更新 更多