lucidrains/ema-pytorch
A simple way to keep track of an Exponential Moving Average (EMA) version of your Pytorch model
解決的問題
提供一種簡單的方法來維持 PyTorch 模型的指數移動平均(EMA)版本。EMA 通常透過在訓練過程中保持模型權重的加權平均,而非依賴最新迭代,來提升模型的穩定性與效能。
工作原理
此套件包裝一個 PyTorch 模組,並追蹤一組根據衰減因子(beta)更新的獨立權重。它包含幾種進階技術:
- 標準 EMA:定期更新模型權重的影子副本。
- 後處理 EMA:實作一種方法,在訓練後使用多個具有不同超參數的檢查點合成新的 EMA 模型。
- 切換 EMA:允許定期以 EMA 權重更新主模型,以改善平坦度與銳度。
- 目標表示路由:使用
EMAModuleWrapper,此套件可將 EMA 子模組的輸出直接路由至其他子模組的前向傳播中,這在自監督學習(SSL)架構中特別有用。
適用對象
使用 PyTorch 的機器學習工程師與研究人員,希望實現權重平均技術以穩定訓練,或在自監督學習中建構教師-學生框架。
主要亮點
- 適用於任何 PyTorch 神經網路的簡單包裝器。
- 支援 EMA 模型的後處理合成。
- 集成「切換 EMA」以實現週期性模型更新。
- 適用於 SSL 設定中嵌套模組樹的進階路由。
相關
- 專案
- 專案
- 專案
- 專案
- 專案