【发布时间】: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