模型的指数移动平均EMA
生活随笔
收集整理的這篇文章主要介紹了
模型的指数移动平均EMA
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、概念
指數移動平均(Exponential Moving Average,EMA),也叫權重移動平均(Weighted Moving Average),是一種給予近期數據更高權重的平均方法。
就是說,用原理數據來影響現在數據的更新。
通俗版本理解:EMA是將每次梯度更新后的權值和前一次的權重進行聯系,使得本次更新收到上次權值的影響。
2、原理
公式:
a代表衰減率,該衰減率用于控制模型更新的速度,一般設為0.9-0.999。該值越大表示與上一次的影響越大,本次權重變化越小,與上次權重越接近,越穩定。
表示本次通過計算的權重,也可以認為是“虛擬權重”
表示上次的模型權重
3、應用
應用場景:在驗證或者推理時使用。? 滑動平均可以使模型在測試數據上更健壯(robust)。
現狀:據說tensorflow中有對應的API,pytorch中沒有,不過可以用類實現。網上有實現的版本。
TensorFlow?提供了?tf.train.ExponentialMovingAverage來實現滑動平均。
pytorch版本的實現代碼,從博客中找的,自己并沒有驗證:
class EMA():def __init__(self, decay):self.decay = decayself.shadow = {}def register(self, name, val):self.shadow[name] = val.clone()def get(self, name):return self.shadow[name]def update(self, name, x):assert name in self.shadownew_average = (1.0 - self.decay) * x + self.decay * self.shadow[name]self.shadow[name] = new_average.clone()總結
以上是生活随笔為你收集整理的模型的指数移动平均EMA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RF-用例执行及参数使用
- 下一篇: 微信小程序雪花背景(动态)