从tf.train.AdamOptimizer获取当前的学习率

kma*_*ace 27 tensorflow

我想打印出我的nn每个训练步骤的学习率.

我知道亚当有一个自适应学习率,但有没有办法可以看到这个(对于张量板中的可视化)

Sal*_*ali 19

所有优化器都有一个私有变量,它保存学习速率的值.

adagrad梯度下降中它被称为self._learning_rate.在亚当它是self._lr.

因此,您只需要打印sess.run(optimzer._lr)即可获得此值.需要Sess.run,因为它们是张量.

  • 请注意,在 tf2.x 中,使用学习率计划时,您应该使用:(对于 ADAM)`lr = optimizationr._decayed_lr(tf.float32)` (8认同)

小智 11

Sung Kim的建议对我有用,我的确切步骤是:

lr = 0.1
step_rate = 1000
decay = 0.95

global_step = tf.Variable(0, trainable=False)
increment_global_step = tf.assign(global_step, global_step + 1)
learning_rate = tf.train.exponential_decay(lr, global_step, step_rate, decay, staircase=True)

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate, epsilon=0.01)
trainer = optimizer.minimize(loss_function)

# Some code here

print('Learning rate: %f' % (sess.run(trainer ._lr)))
Run Code Online (Sandbox Code Playgroud)

  • 我使用`GradientDescentOptimizer`并使用`self._learning_rate`。它对我不起作用。我收到错误`AttributeError:'Operation'对象没有属性'_learning_rate'` (3认同)