每乙個優化器的第乙個引數learning_rate代表學習率。
設定學習率的大小,是在精度和速度之間找到乙個平衡點。
下面介紹設定學習率的方法——退化學習率。
退化學習率又叫學習率衰減,它的本意是希望在訓練過程中對於學習率大和小的優點能夠為我們所用,也就是當訓練剛開始時,使用大的學習率加快速度,訓練到一定程度後使用小的學習率來提高精度,這時可以使用學習率衰減的方法:
def exponential_decay(learning_rate,
global_step,
decay_steps,decay_rate,staircase=false,name=none):
學習率的衰減速度是由
global_step和
decay_steps來決定的。
具體計算公式如下:
decayed_learning_rate=learning_rate*
decay_rate^(
global_step/
decay_steps
)staircase值預設是false。當未true時,將沒有衰減功能,只是使用上面的公式初始化乙個學習率的值而已。
例如下面**:
learning_rate = tf.train.exponential_decay(initial_learning_rate,
global_step,
decay_steps=10000,decay_rate=0.96)
這種方式定義的學習率就是退化學習率,它的意思是當前迭代到
global_step步,學習率每一步都按照每10萬步縮小到96%的速度衰退。
有時還需要對已經訓練好的模型進行微調,可以指定不同層使用不同的學習率。
在訓練的過程中降低學習率
隨著學習的進行,深度學習的學習速率逐步下降 為什麼比 固定的學習速率 得到的結果更加準確?如上圖所示,曲線代表損失值,小球一開始位於 1 處,假設學習速率設定為 v,那麼根據梯度下降,損失值將在 1 2 之間來回移動,無法到達最小值 3 處。要想到達 3 只能降低學習速率。keras中實現方法 le...
神經網路優化 學習率
本文將介紹通過指數衰減的方法設定梯度下降演算法中的學習率,通過指數衰減學習率既可以讓模型的前期快速接近較優解,又可以保證模型在訓練後期不會有太大的波動,從而更加接近區域性最優。在神經網路中需要設定學習率來控制引數更新的速度,如果幅度過大,那麼有可能導致引數在極優值的兩側來回移動,如果學習率過小,雖然...
神經網路優化 學習率
學習率 learning rate 表示了每次引數更新的幅度大小。學習率過大,會導致待優化的引數在最小值附近波動,不收斂 學習率過小,會導致待優化的引數收斂緩慢。在訓練過程中,引數的更新向著損失函式梯度下降的方向。引數的更新公式為 假設損失函式為 梯度是損失函式loss的導數為2w 2。如引數初值為...