1. 背景说明
如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train(),在测试时添加model.eval()。
BN层:
其作用对网络中间的每层进行归一化处理,并且使用变换重构保证每层提取的特征分布不会被破坏。训练时是针对每个mini-batch的,但是测试是针对单张图片的,即不存在batch的概念。由于网络训练完成后参数是固定的,每个batch的均值和方差是不变的,因此直接结算所有batch的均值和方差。所有Batch Normalization的训练和测试时的操作不同。
model.train(): 保证BN层用每一批数据的均值和方差;
model.eval(): 保证BN用全部训练数据的均值和方差。
Dropout层:
其作用克服Overfitting,在每个训练批次中,通过忽略一半的特征检测器,可以明显的减少过拟合现象。
model.train(): 随机取一部分网络连接来训练更新参数;
model.eval():

本文详细介绍了PyTorch中model.eval的作用及其在训练与验证过程中的应用。特别是对于包含BN层(BatchNormalization)和Dropout层的模型,如何在训练与验证阶段正确切换模型状态,以确保模型表现的一致性和准确性。
最低0.47元/天 解锁文章
1255

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



