如何在使用AdamOptimizer进行培训期间获得学习率? (Tensorflow)

时间:2017-07-18 03:10:01

标签: tensorflow

这是我的示例代码:

import tensorflow as tf 

x = tf.Variable(5.0)
y = x**2-2.0*x+1.0
o = tf.train.AdamOptimizer(0.1)
t = o.minimize(y)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(50):
    t.run(session=sess)
    print(sess.run(t._lr))
print(sess.run(x))

但是t._lr总是0.1,而不是我的预期(因为AdamOptimizer是自适应学习率)。有人能帮我吗?感谢。

1 个答案:

答案 0 :(得分:0)

我在AdamOptimizer之后使用了这一行

print("opt.get_name(): ",opt.get_name(),"opt._lr: ",opt._lr,"opt._lr_t: ",opt._lr_t)  #jll1

指示内容:在tensorflow/python/training/adam.py中定义

,应用后也一样:compute_gradients和apply_gradients

print("opt.get_name(): ",opt.get_name(),"opt._lr: ",opt._lr,"opt._lr_t: %f "% (sess.run(opt._lr_t)))  #jll1

结果与您的相同,是否做得不好?它应该变化吗?

('opt.get_name(): ', 'Adam', 'opt._lr: ', 0.0001, 'opt._lr_t: ', None) # 1st
('opt.get_name(): ', 'Adam', 'opt._lr: ', 0.0001, 'opt._lr_t: 0.000100 ') # 2nd

我使用了您的代码更改:

#    print(sess.run(t._lr))
print("o.get_name(): ",o.get_name(),"o._lr: ",o._lr,"o._lr_t: %f "% (sess.run(o._lr_t)))

获得的值为:1.22994