目前TensorFlow支持11種不一樣的經典優化器(參考TensorFlow API tf.train文檔)python
下面重點介紹 tf.train.GradientDescentOptimizer、tf.train.MomentumOptimizer、tf.train.AdamOptimizer算法
這個優化器主要實現的是 梯度降低算法api
__init__(
ide
learning_rate,
學習
use_locking=False,
優化
name='GradientDescent'
ui
)
spa
learning_rate
: (學習率)張量或者浮點數use_locking
: 爲True時鎖定更新name
: 梯度降低名稱,默認爲"GradientDescent".
實現 動量梯度降低算法 ,可參考 簡述動量Momentum梯度降低.net
其中, 即momentum,表示要在多大程度上保留原來的更新方向,這個值在0-1之間,在訓練開始時,因爲梯度可能會很大,因此初始值通常選爲0.5;當梯度不那麼大時,改成0.9。 是學習率,即當前batch的梯度多大程度上影響最終更新方向,跟普通的SGD含義相同。與 code
之和不必定爲1。
__init__(
learning_rate,
momentum,
use_locking=False,
name='Momentum',
use_nesterov=False
)
learning_rate
: (學習率)張量或者浮點數momentum
: (動量)張量或者浮點數use_locking
: 爲True時鎖定更新name
: 梯度降低名稱,默認爲 "Momentum".use_nesterov
: 爲True時,使用 Nesterov Momentum.
實現 Adam優化算法( Adam 這個名字來源於 adaptive moment estimation,自適應矩估計。)
可參考博客梯度優化算法Adam
__init__(
learning_rate=0.001,
beta1=0.9,
beta2=0.999,
epsilon=1e-08,
use_locking=False,
name='Adam'
)
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".