使用tensorflow时候没有考虑过这个事情,今天读代码发现torch还有这样一个重要的语句,记录学习一下:
- model.train()
启用 BatchNormalization 和 Dropout - model.eval()
不启用 BatchNormalization 和 Dropout
训练完 train 样本后,生成的模型 model 要用来测试样本。在 model(test) 之前,需要加上model.eval(),否则只要有输入数据,即使不训练,model 也会改变权值。这是model中含有的 batch normalization 层所带来的的性质。
转载自:https://zhuanlan.zhihu.com/p/208233193