在 PyTorch 中,forward() 和普通方法有什么区别?

klk*_*lkh 4 pytorch

实现forward()自定义nn.Module类的方法与向该类添加普通方法有何不同?

我听说该forward()方法应该只接受和返回张量,因为PyTorch对该forward()方法的输入和输出实现了特殊处理。但我尝试在方法上输入/输出非张量对象forward(),并实现一个没有forward()方法的模块(相反,有多个自定义命名的方法,其行为类似于forward()方法)。两种方法都效果很好。

Was*_*mad 7

forward()方法确实接受任何类型的参数。然而,该方法的目标forward()是封装前向计算步骤。forward()在函数中被调用__call__。在该forward()方法中,PyTorch 调用嵌套模型本身来执行前向传递。

\n\n

鼓励:

\n\n
\n

不要调用forward(x)方法。您应该调用整个模型本身,如 model(x) 中所示,以执行前向传递并输出预测。

\n
\n\n

如果您不这样做会怎样?

\n\n

如果您调用该.forward()方法,并且模型中有钩子,则钩子\xe2\x80\x99不会产生任何效果。

\n