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

有什么区别

tf.gradients

tf.train.RMSPropOptimizer(LR_RATE).compute_gradients

如果存在差异,请说我想使用tf.train.RMSPropOptimizer(self.lr_rate).apply_gradients(),哪一个更受欢迎?

谢谢!

最佳答案 不,这两者之间没有区别,如果你的唯一目标是获得渐变,因为
RMSPropOptimizer(或任何特定的优化器)必须导入具有
compute_gradients功能的基类优化器,而
compute_gradients功能又使用tf.gradients实现从
tf.gradients开始计算与简单使用tf.gradients相同的渐变.

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

RMSProp: Divide the learning rate (lr) for a weight (w) by a running average of the magnitudes of recent gradients for that weight.

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

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

而tf.gradients(..)只是计算渐变.如果使用tf.train.Optimizer中的一个优化器,它会自动计算图形上的渐变.

点赞