1. 程式人生 > >TensorFlow 學習率的設定

TensorFlow 學習率的設定

為了解決學習率不能過大不能過小的問題,TensorFlow提供了靈活的學習率設定方法:指數衰減法

tensorflow.train.exponential_decay(learing_rate,global_step,decay_steps,decay_rate,staircase=False,name=None)

Args:

  • learning_rate : 初始學習率,型別為float32 或 float63的張量或者python number型別
  • global_step : 一個全域性的當前迭代次數,型別為int32 或 int64的張量或者python number型別,不能為負
  • decay_steps : 衰減速度,型別為int32 或 int64的張量或者python number型別,必須為正
  • decay_rate : 衰減率,型別為float32 或 float63的張量或者python number型別
  • staircase : 型別為boolean,通過設定它選擇不同的衰減方式,預設為False表示連續衰減,True表示階梯狀衰減
  • name : 型別為string,操作的名稱

Return:
衰減的學習率

這個函式將指數衰減函式應用於初始化學習率,它使用一個名稱為global_step變數去計算衰減學習率,可以將一個在迭代中自增的TensorFlow變數傳給它。
這個函式返回一個衰減學習率,計算方式如下:

decayed_learning_rate = learing_rate * decay_rate^(global_step / decay_steps)

如果引數staircase為True,global / decay_steps 轉化為一個整數。
Example:每10000輪一個0.96的速度衰減一次

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)