有谁能够解决PyCharm中特定于PyTorch的检查问题?以前有关非PyTorch的问题的帖子建议升级PyCharm,但我目前是最新版本。一种选择当然是完全禁用某些检查,但是我宁愿避免这种情况。

示例:torch.LongTensor(x)给我“意外参数...”,而两个调用签名(带有和不带有x)都受支持。

最佳答案

我相信这是因为torch.LongTensor没有pycharm可以找到的__init__方法。

根据this source的发现,我对this SO post表示感谢:



由于Tensor是类型,因此仅定义new而不定义init是有意义的。

您可以通过测试以下类来试验这种行为:

torch.LongTensor(1)  # Unexpected arguments

发出警告,但以下情况不发出。
class MyLongTensor(torch.LongTensor):
    def __init__(self, *args, **kwargs):
        pass

MyLongTensor(1)  # No error

要确认是否缺少__init__是罪魁祸首,请尝试:
class Example(object):
    pass

Example(0)  # Unexpected arguments

要自己找出答案,请使用pycharm在Ctrl+click上先LongTensor,然后在_TensorBase上查找定义的方法。

10-06 11:18