Tensorflow 自適應學習速率


Tensorflow 自適應學習速率

在模型的初期的時候,往往設置為較大的學習速率比較好,因為距離極值點比較遠,較大的學習速率可以快速靠近極值點;而,后期,由於已經靠近極值點,模型快收斂了,此時,采用較小的學習速率較好,較大的學習速率,容易導致在真實極值點附近來回波動,就是無法抵達極值點。


在tensorflow中,提供了一個較為友好的API, tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None),其數學表達式是這樣的:

\[decayed\_learning\_rate = learning\_rate \times decay\_rate ^{ (global\_step / decay\_steps)} \]

先解釋API中的參數的意思,第一個參數learning_rate即初始學習速率,第二個參數,是用來計算步驟的,每調用一次優化器,即自增1,第三個參數decay_steps通常設為一個常數,如數學公式中所示,與第五個參數配合使用效果較好,第五個參數staircase如果設置為True,那么指數部分就會采用整除策略,表示每decay_step,學習速率變為原來的decay_rate,至於第四個參數decay_rate表示的是學習速率的下降倍率。

global_step = tf.Variable(0, trainable=False)
starter_learning_rate = 0.1
learning_rate = tf.exponential_decay(starter_learning_rate, global_step, 100000, 0.96, staircase=True)
optimizer = tf.GradientDescent(learning_rate)
optimizer.minimize(...my loss..., global_step=global_step)

意思就是,初始的學習速率是0.1,每經過10萬輪次訓練后,學習速率變為原來的0.96


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM