【tensorflow】】模型优化(一)指数衰减学习率
指數衰減學習率是先使用較大的學習率來快速得到一個較優的解,然后隨著迭代的繼續,逐步減小學習率,使得模型在訓練后期更加穩定。在訓練神經網絡時,需要設置學習率(learning rate)控制參數的更新速度,學習速率設置過小,會極大降低收斂速度,增加訓練時間;學習率太大,可能導致參數在最優解兩側來回振蕩。
函數原型:
tf.train.exponential_decay(
? ? learning_rate,
? ? global_step,
? ? decay_steps,
? ? decay_rate,
? ? staircase=False,#默認為False
? ? name=None
)
staircase:布爾值。如果True以不連續的間隔衰減學習速率,最后曲線就是鋸齒狀
該函數返回衰退的學習速率。它被計算為:
decayed_learning_rate = learning_rate *? ? ? ? ? ? ? ? ? ? ? ? decay_rate ^ (global_step / decay_steps)
指數衰減學習率的各種參數:
# 初始學習率
learning_rate = 0.1
# 衰減系數
decay_rate = 0.9
# decay_steps控制衰減速度
# 如果decay_steps大一些,(global_step / decay_steps)就會增長緩慢一些
# 從而指數衰減學習率decayed_learning_rate就會衰減得慢一些
# 否則學習率很快就會衰減為趨近于0
decay_steps = 50
# 迭代輪數
global_steps = 3000
此時的意思是學習率以基數0.9每50步進行衰減。例如當迭代次數從1到3000次時,迭代到最后一次時,3000/50=60. 則衰減到基數的60次方。
是初始化的學習率, 是隨著 的遞增而衰減。顯然,當 為初值0時, 有下面等式:
用來控制衰減速度,如果 大一些, 就會增長緩慢一些。從而指數衰減學習率 就會衰減得慢一否則學習率很快就會衰減為趨近于0。
徒手實現指數衰減學習率:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默認字體
plt.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題
X = []
Y = []
learning_rate=1
global_steps=3000
decay_steps=50
decay_rate=0.9
# 指數學習率衰減過程
for global_step in range(global_steps):
decayed_learning_rate = learning_rate * decay_rate**(global_step / decay_steps)
X.append(global_step / decay_steps)
Y.append(decayed_learning_rate)
#print("global step: %d, learning rate: %f" % (global_step,decayed_learning_rate))
plt.plot(X,Y,'b')
plt.ylabel(u"learning_rate學習率")
plt.xlabel('global_step / decay_steps')
plt.show()
?
---------------------
作者:亮亮蘭
來源:CSDN
原文:https://blog.csdn.net/lyl771857509/article/details/79734107
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的【tensorflow】】模型优化(一)指数衰减学习率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 过滤出某后缀名文件
- 下一篇: 最优化方法系列:Adam+SGD-AMS