learning rate 調整方法

2021-08-21 03:10:07 字數 2803 閱讀 6754

在模型訓練dl模型時,隨著模型的epoch迭代,往往會推薦逐漸減小learning rate,在一些實驗中也證明確實對訓練的收斂有正向效果。對於learning rate的改變,有定製衰減規則直接控制的,也有通過演算法自動尋優的。這裡主要介紹下tf自帶的兩種衰減方法:指數衰減和多項式衰減。

方法原型:

tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=false, name=none)

引數:learning_rate:初始值

global_step:全域性step數(每個step對應一次batch)

decay_steps:learning rate更新的step週期,即每隔多少step更新一次learning rate的值

decay_rate:指數衰減引數(對應α^t中的α)

staircase:是否階梯性更新learning rate,也就是global_step/decay_steps的結果是float型還是向下取整

計算公式:

decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)

方法原型:

tf.train.polynomial_decay(learning_rate, global_step, decay_steps, end_learning_rate=0.0001, power=1.0, cycle=false, name=none)

引數:learning_rate:初始值

global_step:全域性step數(每個step對應一次batch)

decay_steps:learning rate更新的step週期,即每隔多少step更新一次learning rate的值

end_learning_rate:衰減最終值

power:多項式衰減係數(對應(1-t)^α的α)

cycle:step超出decay_steps之後是否繼續迴圈t

計算公式:

當cycle=false時

global_step=min(global_step, decay_steps)

decayed_learning_rate=

(learning_rate-end_learning_rate)*(1-global_step/decay_steps)^(power)+end_learning_rate

當cycle=true時

decay_steps=decay_steps*ceil(global_step/decay_steps)

decayed_learning_rate=

(learning_rate-end_learning_rate)*(1-global_step/decay_steps)^(power)+end_learning_rate

注:ceil是向上取整

def _configure_learning_rate(num_samples_per_epoch, global_step):

"""configures the learning rate.

args:

num_samples_per_epoch: the number of samples in each epoch of training.

global_step: the global_step tensor.

returns:

a `tensor` representing the learning rate.

raises:

valueerror: if

decay_steps = int(num_samples_per_epoch / flags.batch_size *

flags.num_epochs_per_decay)

if flags.sync_replicas:

decay_steps /= flags.replicas_to_aggregate

if flags.learning_rate_decay_type == 'exponential':

return tf.train.exponential_decay(flags.learning_rate,

global_step,

decay_steps,

flags.learning_rate_decay_factor,

staircase=true,

name='exponential_decay_learning_rate')

elif flags.learning_rate_decay_type == 'fixed':

return tf.constant(flags.learning_rate, name='fixed_learning_rate')

elif flags.learning_rate_decay_type == 'polynomial':

return tf.train.polynomial_decay(flags.learning_rate,

global_step,

decay_steps,

flags.end_learning_rate,

power=1.0,

cycle=false,

name='polynomial_decay_learning_rate')

else:

raise valueerror('learning_rate_decay_type [%s] was not recognized',

flags.learning_rate_decay_type)

深度學習 學習率 learning rate

學習率 learning rate 控制 模型的學習進度 lr即stride 步長 即反向傳播演算法中的 n n l n n n l n 學習率 大 學習率 小 學習速度快慢 使用時間點 剛開始訓練時 一定輪數過後 1.易損失值 2.易振盪。1.易過擬合 2.收斂速度慢。在訓練過程中,一般根據訓練輪...

深度學習 學習率 learning rate

學習率 learning rate 控制 模型的學習進度 lr即stride 步長 即反向傳播演算法中的 n n l n n n l n 學習率 大 學習率 小 學習速度快慢 使用時間點 剛開始訓練時 一定輪數過後 1.易損失值 2.易振盪。1.易過擬合 2.收斂速度慢。在訓練過程中,一般根據訓練輪...

ubuntu 10 04下調整 wine字型方法

wine字型調整方法 1 從c windows fonts 裡拷貝乙個simsun.ttc到 wine drive c windows fonts 2 修改 加入 wine system.reg system currentcontrolset hardware profiles current s...