tensorflow adadelta 中使用了 learningrate

最近在实现 adadelta 优化算法,在和 tf 比较结果时发现有挺大的差距,仔细看了 tensorflow c++ 版本的代码,更新公式里使用了 learningrate,目前有下面几个问题,求大神帮忙解答:

  1. adadelta 论文和网上各种教程中 adadelta 都不需要使用 learningrate,但为什么 tensorflow 会使用呢,仅仅是因为测试的效果好?但 adadelta 这个算法本身不就是为了解决学习率设置的问题。
  2. python 版本的 tf 的 adadelta 具体计算逻辑代码在哪里呢,找了半天也没找到。
  3. adadelta 到底应不应该使用 learningrate。

提问人:Myy,发帖时间:2018-4-17 13:34:35

好问题!

Adadelta 的 API 文档中写了:

learning_rate: A Tensor or a floating point value. The learning rate. To match the exact form in the original paper use 1.0.

所以如果想跟原始论文 (https://arxiv.org/pdf/1212.5701v1.pdf) 中一样,需要设置 learning_rate = 1.0.
Python 代码在 https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/python/training/adadelta.py 设置小一些的 learning rate 无非是改变每次更新的步长而已,可以根据你自己的情况来设置。


TianLin,发表于 2018-4-18 09:33:24

非常感谢您的回答,看起来应该是 tf 本身结合实际情况对 adadelta 使用了 trick。
https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/python/training/adadelta.py 这个是 adadelta 的入口函数 具体的计算公式在哪里可以看到呢 (是如何计算及更新权重的) 我这边把 learningrate 设置为 1,跑了自己的结果和 tf 对比,发现有点差距,所以想确认下 tf 里的更新公式是否和自己的一样。(我找了很久没有找到)

是指 adadelta 参数的具体计算逻辑哈


Myy(提问者),2018-4-18

回复 Myy : CPU/GPU 分别是


TianLin,2018-4-18 13:38

正解 感谢!!


Myy(提问者),2018-4-18 14:29