知識蒸餾
在 PyTorch 中,使用 teacher_model.eval() 和凍結教師模型參數是知識蒸餾(Knowledge Distillation)中的關鍵步驟。
?1. teacher_model.eval() 的作用
目的:
將教師模型切換到評估模式,影響某些特定層(如 Dropout、BatchNorm)的行為。
?具體影響:
-
?Dropout 層:
在訓練模式下,Dropout 層會隨機丟棄神經元以防止過擬合;但在評估模式下,Dropout 層會保持所有神經元激活 -
?BatchNorm 層:
在訓練模式下,BatchNorm 使用當前 batch 的均值和方差進行歸一化,并更新移動平均統計量;但在評估模式下,BatchNorm 會固定使用訓練階段累積的全局均值和方差
為什么需要:
- 確保教師模型的推理行為穩定,避免隨機性(如 Dropout)或統計量波動(如 BatchNorm)影響輸出結果的一致性。
- 在生成軟標簽(Soft Targets)時,保持教師模型輸出的可靠性