當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.keras.optimizers.Adamax用法及代碼示例


實現 Adamax 算法的優化器。

繼承自:Optimizer

用法

tf.keras.optimizers.Adamax(
    learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07,
    name='Adamax', **kwargs
)

參數

  • learning_rate Tensor 、浮點值或作為 tf.keras.optimizers.schedules.LearningRateSchedule 的計劃。學習率。
  • beta_1 浮點值或常量浮點張量。一階矩估計的 index 衰減率。
  • beta_2 浮點值或常量浮點張量。 index 加權無窮範數的 index 衰減率。
  • epsilon 用於數值穩定性的小常數。
  • name 應用漸變時創建的操作的可選名稱。默認為 "Adamax"
  • **kwargs 關鍵字參數。允許是 "clipnorm""clipvalue" 之一。 "clipnorm" (float) 按標準裁剪漸變; "clipvalue" (float) 按值裁剪漸變。

拋出

  • ValueError 在任何無效論點的情況下。

它是基於無窮範數的亞當的變體。默認參數遵循論文中提供的參數。 Adamax 有時優於 adam,特別是在具有嵌入的模型中。

初始化:

m = 0  # Initialize initial 1st moment vector
v = 0  # Initialize the exponentially weighted infinity norm
t = 0  # Initialize timestep

帶梯度g的參數w的更新規則在論文第7.1節末尾說明:

t += 1
m = beta1 * m + (1 - beta) * g
v = max(beta2 * v, abs(g))
current_lr = learning_rate / (1 - beta1 ** t)
w = w - current_lr * m / (v + epsilon)

Adam 類似,添加 epsilon 是為了數值穩定性(尤其是在 v_t == 0 時擺脫除以零)。

Adam 相比,此算法的稀疏實現(當梯度是 IndexedSlices 對象時使用,通常是因為 tf.gather 或前向傳遞中的嵌入查找)僅在以下情況下更新可變切片和相應的 m_t , v_t 項部分變量用於前向傳遞。這意味著稀疏行為與密集行為形成對比(類似於某些動量實現,除非實際使用變量切片,否則忽略動量)。

參考:

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.optimizers.Adamax。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。