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

问题描述

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

调用方法

显然,它调用了 forward 方法,但是怎么调用呢?有没有关于发生了什么的 python 文档?

我在以下网址找到了这个: 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) 基本上是转发 x通过模块self

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...