global_step用法

主要是用在梯度下降中的学习率问题上,用来解决lr过大容易越过最优值造成振荡,lr过小造成收敛太慢并且可能达到局部最优。

具体公式:

 decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)

上述公式中

  • decay_rate = 衰减系数
  • decay_steps = 完整使用一遍训练数据所需迭代论数
  • global_step = 当前迭代的轮数)

用于公式中的learning_rate、decay_rate以及decay_steps都是固定值,
可见decayed_learning_rate只与global_rate的变化有关

老规矩:

 global_step = tf.Variable(0)

# 通过exponential_decay函数生成学习率
learning_rate = tf.train.exponential_decay(0.1, global_step, 100, 0.96, staircase = True)

# 使用指数衰减的学习率。在minimize函数中传入global_step将自动更新
# global_ste参数,从而使得学习率也得到相应更新
learning_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(..my loss.., global_step = global_step)

你可能感兴趣的:(global_step用法)