在采用梯度下降的方式训练神经网络的时候,我们使用滑动平均模型会在一定的程度上提高最终模型在测试集上的表现。
在TensorFlow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型,在初始化ExponentialMovingAverage的时候,需要提供一个衰减率(decay)。这个衰减率将来控制模型更新的速度,ExponentialMovingAverage对每个变量会维护一个影子变量(shadow variable),这个影子变量的初始值就是相应变量的初始值,而每次运行变量更新时,影子变量的值会更新为:
shadow_variable = decay × shadow_variable + (1 - decay) × variable
ExponentialMovingAverage还提供了num_updates参数控制decay的大小。如果在ExponentialMovingAverage中提供了num_updates每次使用的衰减率将是:
m i n { d