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

时间:2019-10-22 16:00:30

标签: pytorch

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

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

1 个答案:

答案 0 :(得分:2)

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

建议:

  

不调用forward(x)方法。您应该像在model(x)中那样调用整个模型本身,以执行前向通过和输出预测。

如果不这样做会发生什么?

如果您调用.forward()方法并在模型中添加了hooks,则钩子将无效。