【问题标题】:Why can't PyCharm show PyTorch Module object attributes in debug mode为什么 PyCharm 不能在调试模式下显示 PyTorch Module 对象属性
【发布时间】:2020-12-20 03:56:09
【问题描述】:

我在 PyCharm 中定义了 PyTorch 的 Module 的一个子类,并创建了一个实例 a

from torch.nn import Module

class AModule(Module):
    def __init__(self):
        self.something = 10

    def __repr__(self):
        return "AModule"

a = AModule()

如果我运行调试器并检查a,我看不到它的属性:

我查了一下,Module 是用 Python 编写的(而不是用 C 实现的),那为什么呢?

【问题讨论】:

  • 这部分似乎是 pytorch 本身的问题,不知何故 - 我尝试通过 pdb 运行代码并检查 dir(a),这引发了错误 *** torch.nn.modules.module.ModuleAttributeError: 'AModule' object has no attribute '_parameters'。我通过谷歌搜索该错误消息发现的各种其他问题似乎认为您调用Module 的方式可能是罪魁祸首-您的import 语句是什么样的,您可以将其编辑到您的问题中吗?
  • 也就是说,这似乎也暴露了 PyCharm 及其用于调试的引擎的错误(它可能应该比看起来更优雅地处理这种情况)。如果没有人在合理的时间范围内发布结论性答案,您可以考虑submitting a bug report
  • 谢谢,你说得对,我使用的模块不正确。我应该在 AModule 的 init 中调用 Module 的 init。随时提交答案以获得该功劳;否则我明天就做。是的,我同意 PyCharm 可以更优雅地处理它。

标签: python debugging pycharm pytorch


【解决方案1】:

这是由于在__init__ 的第一次调用中没有使用super 正确初始化Module

super(AModule, self).__init__()

但是,PyCharm 可以显示更多有用的信息,所以我创建了this issue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多