我正在阅读腐朽的学习率,并认为文档中可能存在错误并想要确认。它说衰变方程是:
decayed_learning_rate = learning_rate * decay_rate ^(global_step / decay_steps)
然而,如果global_step = 0
我猜测永远不会腐烂,对吧?但是,请查看示例:
...
global_step = tf.Variable(0, trainable=False)
starter_learning_rate = 0.1
learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step,
100000, 0.96, staircase=True)
# Passing global_step to minimize() will increment it at each step.
learning_step = (
tf.GradientDescentOptimizer(learning_rate)
.minimize(...my loss..., global_step=global_step)
)
它的global_step = tf.Variable(0, trainable=False)
设置为零。因此,没有腐烂。这是正确的扣除吗?
我认为当阶梯函数设置为true时,由于整数除法可能会有一个警告,但即使在整数除法中,似乎仍然没有衰减。或者对楼梯的作用有误解吗?
答案 0 :(得分:2)
变量global_step
被传递给minimize
函数,并且每次运行训练操作learning_step
时都会递增。
它甚至写在你的代码的评论中:
# Passing global_step to minimize() will increment it at each step.
答案 1 :(得分:0)
除了奥利维尔(Olivier)的答案外,全局步长也在apply_gradients中递增(这是minimize中的步长之一)。
如果global_step不为None,则该操作也会递增 global_step
因此,无论您如何进行优化(只需最小化或修改渐变),全局步长都会增加。