对于tensorflow学习率的理解:global_step;decay_steps

tf.train.exponential_decay(
    learning_rate,
    global_step,
    decay_steps,
    decay_rate,
    staircase=False,
    name=None
)

# 学习率迭代公式:
decayed_learning_rate = learning_rate *
                        decay_rate ^ (global_step / decay_steps)


global_step=0,则依次从1,2,3,...,到decay_steps,注意decay_rate大于1就是学习率递增,小于1递减;而且(global_step / decay_steps)的值是作为decay_rate的指数哦,不是相乘。
所以从global_step=0 到 decay_steps学习率都会递减。超出decay_steps就不会再递减了。
如果把train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_steps)后面部分的global_step=global_steps去掉,global_step的自动加一就会失效。
decay_steps 用来控制衰减速度,如果 decay_steps 大一些, (global_step / decay_steps)的值就会增长的小一些,这样学习率更新的速度就会慢一些。
例:
# 初始学习率
learning_rate = 0.01
# 衰减系数
decay_rate = 0.96
decay_steps = 100
# 迭代轮数
global_steps = 10000
此时的意思是学习率以基数0.96每100步进行衰减。例如当迭代次数从1到10000次时,迭代到最后一次时,10000/100=100. 则衰减到基数0.96的100次方。即此时的学习率为0.01*0.96^100 已经基本等于0了

 

你可能感兴趣的:(对于tensorflow学习率的理解:global_step;decay_steps)