在正常建立好模型运行程序时,module都必须先要train,所以总是在训练状态,但如果是下载好别人训练好的模型而不需要自己训练时,运行程序就应该变为eval()模式。
其他可以详见:
pytorch 官方文档
对于一些含有BatchNorm,Dropout等层的模型,在训练和验证时使用的forward在计算上不太一样。在前向训练的过程中指定当前模
型是在训练还是在验证。使用module.train()和module.eval()进行使用,其中这两个方法的实现均有training属性实现。
关于这两个方法的定义源码如下。
train()
def train(self, mode=True):
r"""Sets the module in training mode.
This has any effect only o