这是我的示例代码:
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是自适应学习率)。有人能帮我吗?谢谢。
我在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