首页 > 解决方案 > 在类中调用 self 有什么作用?

问题描述

我注意到在 Pytorch Lightning 的文档中,提到你可以从同一个类中的另一个方法调用 forward 方法,只需调用self(x). 我无法找到有关其工作原理的任何信息。我一直以为您会使用以下方法调用该方法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)

标签: pythonpytorchpytorch-lightning

解决方案


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

  self(x)

相当于

  self.__call__(x)

对于 pytorch nn.Module(和所有派生类)__call__包装模块的forward功能,因此,从您的角度来看self(x),基本上是x通过模块转发self


推荐阅读