滑动平均模型可以在一定程度上提高最终模型在测试集或实际预测数据的准确性。神经网络中每层的参数矩阵W都建一个对应的影子变shade_w量,一般情况下每一批数据更新一次W,shade_w也会随着更新但更新的幅度小有W。影子变量更新值由下面的公式决定:
shadow_w = decay * shadow_w + (1-decay) * w
shadow_w的初始值就是w的初始值,decay是衰减率自己指定的参数,w是这次更新后的值。使用方法很简单,下面看下源码和便用方法
#构告函数
#decay必传的参数,一般是(0.9,1)
#num_updates可以控制decay的大小,min(decay, (1 + num_updates) / (10 + num_updates))
#zero_debias本人也没看太懂,反正是一般用不到的,应该是指避免数学上的一些错误,例如除0
def __init__(self, decay, num_updates=None, zero_debias=False,
name="ExponentialMovingAverage")
下面看一个例子
v1