我注意到Pytorch Lightning的文档中提到,只需调用self(x)
,就可以从同一类中的另一个方法调用正向方法。我找不到任何关于这是如何工作的信息。我一直以为你会用self.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)
对于pytorchnn.Module
(和所有派生类(,__call__
封装模块的forward
函数,因此,从您的角度来看,self(x)
基本上是通过模块self
转发x
。