在 class 中调用 self 有什么作用?

What does calling self within a class do?

我在 Pytorch Lightning 的文档中注意到,有人提到您可以通过调用 self(x) 从同一 class 中的另一个方法调用 forward 方法。我一直无法找到有关其工作原理的任何信息。我一直认为您会使用 self.forward

调用该方法

显然,它调用了 forward 方法,但是如何呢?是否有关于发生的事情的 python 文档?

我在下面 URL 找到了这个: https://pytorch-lightning.readthedocs.io/en/stable/new-project.html

具体的代码片段是这样的:

def training_step(self, batch, batch_idx):
    ...
    z = self(x)

一般来说,在python中,当“调用”一个对象时,你是在调用它的__call__方法。也就是说,

  self(x)

相当于

  self.__call__(x)

对于 pytorch nn.Module(以及所有衍生产品 类)__call__ 环绕模块的 forward 函数,因此,从您的角度来看 self(x) 基本上是通过模块 self.

转发 x