tensorflow 学习率控制

2019-08-07  本文已影响0人  snowpigppp

为什么调整学习率

梯度下降中学习率不同导致的结果
不同学习率对训练效果的影响

学习率的调整

  1. 离散下降(discrete staircase)
    对于深度学习来说,每 tt 轮学习,学习率减半。对于监督学习来说,初始设置一个较大的学习率,然后随着迭代次数的增加,减小学习率。
  2. 指数减缓(exponential decay)
    对于深度学习来说,学习率按训练轮数增长指数差值递减。例如:
    a = 0.95^{epoch\_num} \cdot a_0
    又或者公式为:
    a = \frac{k}{\sqrt {epoch\_num}}
    其中epoch_num为当前epoch的迭代轮数。不过第二种方法会引入另一个超参 kk 。
  3. 分数减缓(1/t decay)
    对于深度学习来说,学习率按照公式
    a = \frac{a}{1+decay\_rate * epoch\_num}
    变化, 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控制退出多个循环。

上一篇下一篇

猜你喜欢

热点阅读