【问题标题】:TypeError: 'module' object is not subscriptable (Pytorch) [closed]TypeError:“模块”对象不可下标(Pytorch)[关闭]
【发布时间】:2021-07-13 11:31:34
【问题描述】:

我目前正在自学和实施 PyTorch。 在使用本教程进行迁移学习时: https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html

我在这个特定的代码块中遇到了错误:

image_datasets = {x: datasets.ImageFolder(os.path.join(main_dataset, x),
                                          transforms[x])
                 for x in ['Train','Test']}

错误码如下:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-41-c83fc3ba4a1c> in <module>()
      1 image_datasets = {x: datasets.ImageFolder(os.path.join(main_dataset, x),
      2                                           transforms[x])
----> 3                 for x in ['Train','Test']}

<ipython-input-41-c83fc3ba4a1c> in <dictcomp>(.0)
      1 image_datasets = {x: datasets.ImageFolder(os.path.join(main_dataset, x),
      2                                           transforms[x])
----> 3                 for x in ['Train','Test']}

TypeError: 'module' object is not subscriptable

我确定我没有错误地使用任何模块,也没有在这个特定代码块中出现任何拼写错误。

在搜索错误代码时,我也没有找到与此相关的任何内容。

请帮忙,谢谢。

【问题讨论】:

  • 你需要在错误指向的地方写data_transforms[x]而不是transforms[x]。就目前而言,您正在尝试索引torchvision.transforms(您导入为例如from torchvision import transforms),因此出现错误。
  • 啊,现在我明白了。一定是我在上一个块中声明的转换变量让编译器感到困惑。谢谢!
  • 如果您确实声明了一个名为transforms 的变量,请更改它并重新启动内核,因为它会影响torchvision.transforms
  • 是的,我意识到了这个愚蠢的错误,我忘记了变量名很容易混淆编译器。多谢赐教。
  • 我已将您的答案作为解决方案发布并归功于您,感谢您的帮助!

标签: python pytorch google-colaboratory


【解决方案1】:

引用@Mustafa Aydin

你需要在错误指向的地方写data_transforms[x]而不是transforms[x]。就目前而言,您正在尝试索引torchvision.transforms(您导入为例如from torchvision import transforms),因此出现错误。

我声明了一个名为 transforms 的变量,但它与 torchvision.transforms 冲突时使编译器感到困惑。

因此这里提出的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2022-01-18
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2017-07-15
    • 2021-10-01
    相关资源
    最近更新 更多