tf.train.ExponentialMovingAverage和tf.train.MomentumOptimizer有什么区别?

时间:2018-04-08 08:59:02

标签: python tensorflow machine-learning

我见过doc,tf.train.ExponentialMovingAverage实现了这个公式:

shadow_variable = decay * shadow_variable + (1 - decay) * variable

我没有找到tf.train.MomentumOptimizer的公式。但我认为可能是:

v = γ*v - learning_rate*dx
θ = θ - v

我认为这两个功能有相似的效果,所以它们可以相互交换吗?或者它们有不同的应用场景?或者我完全错了?

shadow_variable是否相当于θ?

感谢任何指导。

1 个答案:

答案 0 :(得分:2)

你完全错了。

tf.train.ExponentialMovingAverage实现只是指数移动平均线:shadow_variable是当前时间步的移动平均线,并使用您发布的公式进行更新。 每次执行保持移动平均线的节点时,会发生什么只是执行该公式。

相反,tf.train.MomentumOptimizer是一种更复杂的对象。 简而言之,它实现了一个名为Gradient Descent with Momentum的参数更新算法,该算法计算模型参数的梯度,并使用计算的梯度+在训练步骤中累积的动量项来执行每个网络参数的更新步骤。

动量项当然是梯度的移动平均值。但是这两个函数执行不同的操作并且有不同的目标。