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 设置中嵌套模块树的高级路由。
相关
- 项目
- 项目
- 项目
- 项目
- 项目