tensorflow 学习率控制
2019-08-07 本文已影响0人
snowpigppp
为什么调整学习率
梯度下降中学习率不同导致的结果不同学习率对训练效果的影响
学习率的调整
- 离散下降(discrete staircase)
对于深度学习来说,每 tt 轮学习,学习率减半。对于监督学习来说,初始设置一个较大的学习率,然后随着迭代次数的增加,减小学习率。 - 指数减缓(exponential decay)
对于深度学习来说,学习率按训练轮数增长指数差值递减。例如:
又或者公式为:
其中epoch_num为当前epoch的迭代轮数。不过第二种方法会引入另一个超参 kk 。 - 分数减缓(1/t decay)
对于深度学习来说,学习率按照公式
变化,decay_rate
控制减缓幅度
自己写的一个学习率下降的小demo
if dice > 0.85:
global_step += 1
lr = lr * 0.9999
if lr <= 1e-6:
print('learning rate is lower than 1e-6')
break_flag = True
break
elif dice <= 0.85:
lr = 1e-3
用每个step * 0.9999
的方式控制。70000个global step
后lr才会降到1e-6.
用break_flag
控制退出多个循环。