實現 Adam 算法的優化器。
繼承自:Optimizer
用法
tf.keras.optimizers.Adam(
learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False,
name='Adam', **kwargs
)
參數
-
learning_rate
一個Tensor
,浮點值,或者是一個tf.keras.optimizers.schedules.LearningRateSchedule
的計劃,或者一個不帶參數並返回要使用的實際值的可調用對象,即學習率。默認為 0.001。 -
beta_1
浮點值或常量浮點張量,或不帶參數並返回要使用的實際值的可調用對象。一階矩估計的 index 衰減率。默認為 0.9。 -
beta_2
浮點值或常量浮點張量,或不帶參數並返回要使用的實際值的可調用函數,二階矩估計的 index 衰減率。默認為 0.999。 -
epsilon
用於數值穩定性的小常數。這個 epsilon 是 Kingma 和 Ba 論文中的 "epsilon hat"(在 2.1 節之前的公式中),而不是論文算法 1 中的 epsilon。默認為 1e-7。 -
amsgrad
布爾值。是否應用來自論文“On the Convergence of Adam and beyond”的該算法的 AMSGrad 變體。默認為False
。 -
name
應用漸變時創建的操作的可選名稱。默認為"Adam"
。 -
**kwargs
關鍵字參數。允許是"clipnorm"
或"clipvalue"
之一。"clipnorm"
(float) 按標準裁剪漸變;"clipvalue"
(float) 按值裁剪漸變。
拋出
-
ValueError
在任何無效論點的情況下。
Adam 優化是一種基於first-order 和second-order 矩的自適應估計的隨機梯度下降方法。
根據 Kingma 等人,2014 年的說法,該方法“計算效率高,內存需求少,對梯度的對角線重新縮放不變,並且非常適合數據/參數方麵的大問題”。
用法:
opt = tf.keras.optimizers.Adam(learning_rate=0.1)
var1 = tf.Variable(10.0)
loss = lambda:(var1 ** 2)/2.0 # d(loss)/d(var1) == var1
step_count = opt.minimize(loss, [var1]).numpy()
# The first step is `-learning_rate*sign(grad)`
var1.numpy()
9.9
參考:
- 金馬等人,2014
- Reddi 等人,2018 年為了
amsgrad
.
注意:
epsilon 的默認值 1e-7 通常可能不是一個好的默認值。例如,在 ImageNet 上訓練 Inception 網絡時,當前較好的選擇是 1.0 或 0.1。請注意,由於 Adam 使用的是 Kingma 和 Ba 論文第 2.1 節之前的公式,而不是算法 1 中的公式,因此這裏提到的"epsilon" 在論文中是"epsilon hat"。
該算法的稀疏實現(當梯度是 IndexedSlices 對象時使用,通常是因為tf.gather
或前向傳遞中的嵌入查找)確實將動量應用於可變切片,即使它們未在前向傳遞中使用(意味著它們梯度為零)。動量衰減 (beta1) 也適用於整個動量累加器。這意味著稀疏行為等同於密集行為(與某些動量實現相反,除非實際使用變量切片,否則它們會忽略動量)。
相關用法
- Python tf.keras.optimizers.Adamax用法及代碼示例
- Python tf.keras.optimizers.Optimizer.set_weights用法及代碼示例
- Python tf.keras.optimizers.schedules.serialize用法及代碼示例
- Python tf.keras.optimizers.SGD用法及代碼示例
- Python tf.keras.optimizers.Optimizer用法及代碼示例
- Python tf.keras.optimizers.schedules.ExponentialDecay用法及代碼示例
- Python tf.keras.optimizers.schedules.PiecewiseConstantDecay用法及代碼示例
- Python tf.keras.optimizers.Nadam用法及代碼示例
- Python tf.keras.optimizers.RMSprop用法及代碼示例
- Python tf.keras.optimizers.schedules.deserialize用法及代碼示例
- Python tf.keras.optimizers.schedules.CosineDecay用法及代碼示例
- Python tf.keras.optimizers.schedules.CosineDecayRestarts用法及代碼示例
- Python tf.keras.optimizers.Optimizer.apply_gradients用法及代碼示例
- Python tf.keras.optimizers.Ftrl用法及代碼示例
- Python tf.keras.optimizers.Optimizer.get_weights用法及代碼示例
- Python tf.keras.optimizers.schedules.PolynomialDecay用法及代碼示例
- Python tf.keras.optimizers.serialize用法及代碼示例
- Python tf.keras.optimizers.schedules.InverseTimeDecay用法及代碼示例
- Python tf.keras.applications.inception_resnet_v2.preprocess_input用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.optimizers.Adam。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。