知识蒸馏
在 PyTorch 中,使用 teacher_model.eval() 和冻结教师模型参数是知识蒸馏(Knowledge Distillation)中的关键步骤。
1. teacher_model.eval() 的作用
目的:
将教师模型切换到评估模式,影响某些特定层(如 Dropout、BatchNorm)的行为。
具体影响:
-
Dropout 层:
在训练模式下,Dropout 层会随机丢弃神经元以防止过拟合;但在评估模式下,Dropout 层会保持所有神经元激活 -
BatchNorm 层:
在训练模式下,BatchNorm 使用当前 batch 的均值和方差进行归一化,并更新移动平均统计量;但在评估模式下,BatchNorm 会固定使用训练阶段累积的全局均值和方差
为什么需要:
- 确保教师模型的推理行为稳定,避免随机性(如 Dropout)或统计量波动(如 BatchNorm)影响输出结果的一致性。
- 在生成软标签(Soft Targets)时,保持教师模型输出的可靠性