实现自定义forward()
类的nn.Module
方法与向该类添加普通方法有何不同?
我听说forward()
方法只应接受并返回张量,因为PyTorch对forward()
方法的输入和输出实现了特殊处理。但是我尝试在forward()
方法上输入/输出非张量对象,并实现了一个没有forward()
方法的模块(相反,有多个自定义命名的方法的作用类似于{{ 1}}方法)。两种方法都运作良好。
答案 0 :(得分:2)
forward()
方法确实接受任何类型的参数。但是,forward()
方法的目标是封装正向计算步骤。 forward()
在__call__
函数中被调用。在forward()
方法中,PyTorch调用嵌套模型本身执行前向传递。
建议:
不调用forward(x)方法。您应该像在model(x)中那样调用整个模型本身,以执行前向通过和输出预测。
如果不这样做会发生什么?
如果您调用.forward()
方法并在模型中添加了hooks,则钩子将无效。