1. model.train()
启用 BatchNormalization 和 Dropout
2. model.eval()
不启用 BatchNormalization 和 Dropout
训练完 train 样本后,生成的模型 model 要用来测试样本。在 model(test) 之前,需要加上model.eval(),否则只要有输入数据,即使不训练,model 也会改变权值。这是model中含有的 batch normalization 层所带来的的性质。
在做one classification的时候,训练集和测试集的样本分布是不一样的,尤其需要注意这一点。