實現 Momentum 算法的優化器。
繼承自:Optimizer
用法
tf.compat.v1.train.MomentumOptimizer(
learning_rate, momentum, use_locking=False, name='Momentum',
use_nesterov=False
)
參數
-
learning_rate
Tensor
或浮點值。學習率。 -
momentum
Tensor
或浮點值。勢頭。 -
use_locking
如果True
使用鎖進行更新操作。 -
name
應用漸變時創建的操作的可選名稱前綴。默認為"Momentum"。 -
use_nesterov
如果True
使用 Nesterov Momentum。參見(Sutskever 等人,2013 年)。此實現始終以傳遞給優化器的變量值計算梯度。使用 Nesterov Momentum 使變量跟蹤論文中稱為theta_t + mu*v_t
的值。此實現是原始公式的近似值,適用於高動量值。它將通過假設新梯度將由當前平均梯度加上動量和平均梯度變化的乘積來估計 NAG 中的"adjusted gradient"。
遷移到 TF2
警告:這個 API 是為 TensorFlow v1 設計的。繼續閱讀有關如何從該 API 遷移到本機 TensorFlow v2 等效項的詳細信息。見TensorFlow v1 到 TensorFlow v2 遷移指南有關如何遷移其餘代碼的說明。
tf.compat.v1.train.MomentumOptimizer 與 Eager 模式和 tf.function
兼容。當啟用即刻執行時,learning_rate
, momentum
可以是一個不帶參數並返回要使用的實際值的可調用對象。這對於在優化器函數的不同調用中更改這些值很有用。
要切換到原生 TF2 風格,請直接使用帶有momentum
參數的tf.keras.optimizers.SGD
。
到原生 TF2 的結構映射
前:
optimizer = tf.compat.v1.train.MomentumOptimizer(
learning_rate=learning_rate,
momentum=momentum,
use_nesterov=use_nesterov)
後:
optimizer = tf.keras.optimizers.SGD(
learning_rate=learning_rate,
momentum=momentum,
nesterov=use_nesterov)
如何映射參數
TF1 參數名稱 | TF2 參數名稱 | 注意 |
---|---|---|
learning_rate
|
learning_rate
|
小心設置從全局步驟計算的learning_rate 張量值。在 TF1 中,這通常意味著動態學習率,並且會在每一步中重新計算。在 TF2 (eager + function) 中,它會將其視為僅計算一次的標量值,而不是每次都計算的符號占位符。 |
momentum |
momentum |
- |
use_locking |
- | 不適用於 TF2。 |
use_nesterov |
nesterov |
- |
使用前後示例
前:
x = tf.Variable([1,2,3], dtype=tf.float32)
grad = tf.constant([0.1, 0.2, 0.3])
optimizer = tf.compat.v1.train.MomentumOptimizer(
learning_rate=0.001,
momentum=0.9,
use_nesterov=False)
optimizer.apply_gradients(zip([grad], [x]))
後:
x = tf.Variable([1,2,3], dtype=tf.float32)
grad = tf.constant([0.1, 0.2, 0.3])
optimizer = tf.keras.optimizers.SGD(
learning_rate=0.001,
momentum=0.9,
nesterov=False)
optimizer.apply_gradients(zip([grad], [x]))
計算(如果 use_nesterov = False
):
accumulation = momentum * accumulation + gradient
variable -= learning_rate * accumulation
請注意,在該算法的密集版本中,accumulation
會更新並應用,而不管梯度的值如何,而稀疏版本(當梯度為 IndexedSlices
時,通常是因為 tf.gather
或嵌入)僅更新變量切片和相應的accumulation
術語,當變量的該部分用於前向傳遞時。
相關用法
- Python tf.compat.v1.train.MomentumOptimizer.compute_gradients用法及代碼示例
- Python tf.compat.v1.train.MonitoredSession.run_step_fn用法及代碼示例
- Python tf.compat.v1.train.MonitoredSession用法及代碼示例
- Python tf.compat.v1.train.FtrlOptimizer.compute_gradients用法及代碼示例
- Python tf.compat.v1.train.get_or_create_global_step用法及代碼示例
- Python tf.compat.v1.train.cosine_decay_restarts用法及代碼示例
- Python tf.compat.v1.train.Optimizer用法及代碼示例
- Python tf.compat.v1.train.AdagradOptimizer.compute_gradients用法及代碼示例
- Python tf.compat.v1.train.init_from_checkpoint用法及代碼示例
- Python tf.compat.v1.train.Checkpoint用法及代碼示例
- Python tf.compat.v1.train.Supervisor.managed_session用法及代碼示例
- Python tf.compat.v1.train.Checkpoint.restore用法及代碼示例
- Python tf.compat.v1.train.global_step用法及代碼示例
- Python tf.compat.v1.train.RMSPropOptimizer.compute_gradients用法及代碼示例
- Python tf.compat.v1.train.exponential_decay用法及代碼示例
- Python tf.compat.v1.train.natural_exp_decay用法及代碼示例
- Python tf.compat.v1.train.RMSPropOptimizer用法及代碼示例
- Python tf.compat.v1.train.get_global_step用法及代碼示例
- Python tf.compat.v1.train.GradientDescentOptimizer.compute_gradients用法及代碼示例
- Python tf.compat.v1.train.linear_cosine_decay用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.train.MomentumOptimizer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。