微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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中的一个优化器,它会自动计算图形上的渐变.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐