簡(jiǎn)介
在Tensorflow中,為解決設(shè)定學(xué)習(xí)率(learning rate)問(wèn)題钧舌,提供了指數(shù)衰減法來(lái)解決禁熏。
通過(guò)tf.train.exponential_decay函數(shù)實(shí)現(xiàn)指數(shù)衰減學(xué)習(xí)率垦巴。
學(xué)習(xí)率較大容易搜索震蕩(在最優(yōu)值附近徘徊)媳搪,學(xué)習(xí)率較小則收斂速度較慢,
那么可以通過(guò)初始定義一個(gè)較大的學(xué)習(xí)率骤宣,通過(guò)設(shè)置decay_rate來(lái)縮小學(xué)習(xí)率秦爆,減少迭代次數(shù)。
tf.train.exponential_decay
就是用來(lái)實(shí)現(xiàn)這個(gè)功能涯雅。
步驟:
1.首先使用較大學(xué)習(xí)率(目的:為快速得到一個(gè)比較優(yōu)的解);
2.然后通過(guò)迭代逐步減小學(xué)習(xí)率(目的:為使模型在訓(xùn)練后期更加穩(wěn)定);
定義
tf.train.exponential_decay(
learning_rate,
global_,
decay_steps,
decay_rate,
staircase=True/False
)
參數(shù)設(shè)置:
- learning_rate = 學(xué)習(xí)速率
- decay_rate = 0.96 # 衰減速率鲜结,即每一次學(xué)習(xí)都衰減為原來(lái)的0.96
- 如果staircase=True展运,那么每decay_steps更新一次decay_rate活逆,如果是False那么每一步都更新一次decay_rate。
- 如果staircase為T(mén)rue,那么每decay_steps改變一次learning_rate拗胜,
- 改變?yōu)閘earning_rate*(decay_rate^decay_steps)
- 如果為False則蔗候,每一步都改變,為learning_rate*decay_rate
- global_ = tf.placeholder(dtype=tf.int32)