最近在实现 adadelta 优化算法,在和 tf 比较结果时发现有挺大的差距,仔细看了 tensorflow c++ 版本的代码,更新公式里使用了 learningrate,目前有下面几个问题,求大神帮忙解答:
- adadelta 论文和网上各种教程中 adadelta 都不需要使用 learningrate,但为什么 tensorflow 会使用呢,仅仅是因为测试的效果好?但 adadelta 这个算法本身不就是为了解决学习率设置的问题。
- python 版本的 tf 的 adadelta 具体计算逻辑代码在哪里呢,找了半天也没找到。
- 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 代码在 tensorflow/adadelta.py at r1.8 · tensorflow/tensorflow · GitHub 设置小一些的 learning rate 无非是改变每次更新的步长而已,可以根据你自己的情况来设置。
TianLin,发表于 2018-4-18 09:33:24
非常感谢您的回答,看起来应该是 tf 本身结合实际情况对 adadelta 使用了 trick。
tensorflow/adadelta.py at r1.8 · tensorflow/tensorflow · GitHub 这个是 adadelta 的入口函数 具体的计算公式在哪里可以看到呢 (是如何计算及更新权重的) 我这边把 learningrate 设置为 1,跑了自己的结果和 tf 对比,发现有点差距,所以想确认下 tf 里的更新公式是否和自己的一样。(我找了很久没有找到)
是指 adadelta 参数的具体计算逻辑哈
Myy(提问者),2018-4-18