model.train() :
启用 BatchNormalization 和 Dropout
model.eval() :
禁止 BatchNormalization 和 Dropout
训练完 train 样本之后,使用训练好的模型验证 test 样本,需要在代码之前加上model.eval(),否则只要输入数据,即使不训练,模型也会改变权值。加上model.eval()时,框架会自动把BN(BatchNorm)和DropOut固定住,不会取平均,而是用训练好的值。
本文解析了PyTorch中model.train()与model.eval()的区别,前者用于启用BatchNormalization和Dropout,后者则禁用这些功能,确保在评估模型时不改变权值。在模型训练完成后,使用model.eval()进行测试样本验证至关重要。
model.train() :
启用 BatchNormalization 和 Dropout
model.eval() :
禁止 BatchNormalization 和 Dropout
训练完 train 样本之后,使用训练好的模型验证 test 样本,需要在代码之前加上model.eval(),否则只要输入数据,即使不训练,模型也会改变权值。加上model.eval()时,框架会自动把BN(BatchNorm)和DropOut固定住,不会取平均,而是用训练好的值。
363
4229

被折叠的 条评论
为什么被折叠?