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

问题描述 投票:0回答:1

这是我的示例代码:

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是自适应学习率)。有人能帮我吗?谢谢。

tensorflow
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.