TensorFlow經常使用的優化器

簡介

目前TensorFlow支持11種不一樣的經典優化器(參考TensorFlow API tf.train文檔python

  • tf.train.Optimizer
  • tf.train.GradientDescentOptimizer
  • tf.train.AdadeltaOptimizer
  • tf.train.AdagtadOptimizer
  • tf.train.AdagradDAOptimizer
  • tf.train.MomentumOptimizer
  • tf.train.AdamOptimizer
  • tf.train.FtrlOptimizer
  • tf.train.ProximalGradientDescentOptimizer
  • tf.train.ProximalAdagradOptimizer
  • tf.train.RMSProOptimizer

 

介紹三種經常使用優化器

下面重點介紹 tf.train.GradientDescentOptimizer、tf.train.MomentumOptimizer、tf.train.AdamOptimizer算法

 

 

 

  1. tf.train.GradientDescentOptimizer

        這個優化器主要實現的是 梯度降低算法api

 
  1. __init__(ide

  2. learning_rate,學習

  3. use_locking=False,優化

  4. name='GradientDescent'ui

  5. )spa

  • learning_rate: (學習率)張量或者浮點數
  • use_locking: 爲True時鎖定更新
  • name: 梯度降低名稱,默認爲"GradientDescent".

     

   2. tf.train.MomentumOptimizer

 

        實現 動量梯度降低算法 ,可參考 簡述動量Momentum梯度降低.net

 

其中, 即momentum,表示要在多大程度上保留原來的更新方向,這個值在0-1之間,在訓練開始時,因爲梯度可能會很大,因此初始值通常選爲0.5;當梯度不那麼大時,改成0.9。 是學習率,即當前batch的梯度多大程度上影響最終更新方向,跟普通的SGD含義相同。與 code

 之和不必定爲1。

 
  1. __init__(

  2. learning_rate,

  3. momentum,

  4. use_locking=False,

  5. name='Momentum',

  6. use_nesterov=False

  7. )

  • learning_rate: (學習率)張量或者浮點數
  • momentum: (動量)張量或者浮點數
  • use_locking: 爲True時鎖定更新
  • name:  梯度降低名稱,默認爲 "Momentum".
  • use_nesterov:  爲True時,使用 Nesterov Momentum. 

 

   3.  tf.train.AdamOptimizer

        實現 Adam優化算法(  Adam 這個名字來源於 adaptive moment estimation,自適應矩估計。)

可參考博客梯度優化算法Adam

 
  1. __init__(

  2. learning_rate=0.001,

  3. beta1=0.9,

  4. beta2=0.999,

  5. epsilon=1e-08,

  6. use_locking=False,

  7. name='Adam'

  8. )

  • learning_rate: (學習率)張量或者浮點數
  • beta1:  浮點數或者常量張量 ,表示 The exponential decay rate for the 1st moment estimates.
  • beta2:  浮點數或者常量張量 ,表示 The exponential decay rate for the 2nd moment estimates.
  • epsilon: A small constant for numerical stability. This epsilon is "epsilon hat" in the Kingma and Ba paper (in the formula just before Section 2.1), not the epsilon in Algorithm 1 of the paper.
  • use_locking: 爲True時鎖定更新
  • name:  梯度降低名稱,默認爲 "Adam".
相關文章
相關標籤/搜索