Pytorch在__init __()中定义层和直接在forward()中使用有什么区别?

Alp*_*oMK 5 python neural-network conv-neural-network pytorch

__init__()函数中定义层的方法,稍后再调用层的方法和直接在forward()函数中使用层的方法之间有什么区别?在编写计算图之前,
是否应该在构造函数(例如__init__)中定义计算图中的每一层?
我可以直接在其中定义和使用它们forward()吗?

blu*_*nox 5

您应该在您的__init__方法中定义所有包含在训练过程中要训练的砝码的东西。

您不需要定义激活功能,例如softmaxReLUsigmoid在其中__init__,只需在中调用它们即可forward

例如,辍学层也不需要在中定义__init__,它们也可以被调用forward。但是,在您中定义它们__init__的好处是可以在评估过程中更容易关闭它们(通过调用eval()模型)

希望这很清楚。请问您还有其他问题。