tf.gradients和tf.train.RMSPropOptimizer(lr_rate).compute_gradients有什么区别?

时间:2016-12-23 20:52:53

标签: python numpy machine-learning tensorflow deep-learning

之间有什么区别
tf.train.RMSPropOptimizer(self.lr_rate).apply_gradients()

<html class="specific-page">

如果存在差异,请说我想使用@media only screen and (min-device-width: 700px) { html.specific-page { font-size: 19px; } .specific-page h1 { font-size: 1.5rem; } } ,哪一个更受青睐?

谢谢!

1 个答案:

答案 0 :(得分:1)

不,如果您的唯一目标是获得渐变,那么这两者之间没有区别,因为RMSPropOptimizer(或任何特定的优化器)必须导入具有{{3}的基类Optimizer函数反过来使用此处的tf.gradients实现compute_gradients来计算渐变,这与仅使用tf.gradients相同。

相反,如果您正在训练需要计算渐变的神经网络,那么使用tf.train.RMSPropOptimizer(..)是可取的,因为RMSProp优化是在小批量设置中加快学习的方法之一

  

RMSProp:将权重(w)的学习率(lr)除以该权重的近期梯度幅度的平均值。

将(Momentum,AdaGrad,RMSProp)等不同优化应用于渐变的想法是,在计算渐变之后,您希望对它们进行一些处理,然后应用这些处理过的渐变。这是为了更好的学习。

因此,在RMSProp中,您不会始终使用恒定的学习率。它取决于“近期梯度的运行平均值”

tf.gradients(..)只计算渐变。如果您使用tf.gradients中的一个优化器,它会自动计算图表上的渐变。