在TensorFlow网站中衰减学习率的示例是否会降低学习率?

时间:2016-06-27 04:07:26

标签: machine-learning neural-network tensorflow conv-neural-network

我正在阅读腐朽的学习率,并认为文档中可能存在错误并想要确认。它说衰变方程是:

  

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时,由于整数除法可能会有一个警告,但即使在整数除法中,似乎仍然没有衰减。或者对楼梯的作用有误解吗?

2 个答案:

答案 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

因此,无论您如何进行优化(只需最小化或修改渐变),全局步长都会增加。