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


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


實現 RMSprop 算法的優化器。

繼承自:Optimizer

用法

tf.keras.optimizers.RMSprop(
    learning_rate=0.001, rho=0.9, momentum=0.0, epsilon=1e-07, centered=False,
    name='RMSprop', **kwargs
)

參數

  • learning_rate Tensor ,浮點值,或作為 tf.keras.optimizers.schedules.LearningRateSchedule 的計劃,或不帶參數並返回要使用的實際值的可調用對象。學習率。默認為 0.001。
  • rho 曆史/即將到來的梯度的折扣因子。默認為 0.9。
  • momentum 標量或標量 Tensor 。默認為 0.0。
  • epsilon 用於數值穩定性的小常數。這個 epsilon 是 Kingma 和 Ba 論文中的 "epsilon hat"(在 2.1 節之前的公式中),而不是論文算法 1 中的 epsilon。默認為 1e-7。
  • centered 布爾值。如果 True ,則通過梯度的估計方差對梯度進行歸一化;如果為 False,則通過非居中的第二時刻。將此設置為 True 可能有助於訓練,但在計算和內存方麵稍微貴一些。默認為 False
  • name 應用漸變時創建的操作的可選名稱前綴。默認為 "RMSprop"
  • **kwargs 關鍵字參數。允許是 "clipnorm""clipvalue" 之一。 "clipnorm" (float) 按標準裁剪漸變; "clipvalue" (float) 按值裁剪漸變。

RMSprop 的要點是:

  • 保持梯度平方的移動(折現)平均值
  • 將梯度除以該平均值的根

RMSprop 的這種實現使用的是普通動量,而不是 Nesterov 動量。

居中的版本還保留了梯度的移動平均值,並使用該平均值來估計方差。

請注意,在該算法的密集實現中,即使梯度為零(即累加器將衰減,將應用動量),變量及其對應的累加器(動量、梯度移動平均、平方梯度移動平均)也會更新。稀疏實現(當梯度是 IndexedSlices 對象時使用,通常是因為 tf.gather 或前向傳遞中的嵌入查找)不會更新變量切片或其累加器,除非這些切片在前向傳遞中使用(也不是有一個"eventual" 更正來解釋這些省略的更新)。這導致對大型嵌入查找表的更有效更新(其中大多數切片在特定的圖形執行中不被訪問),但與已發布的算法不同。

用法:

opt = tf.keras.optimizers.RMSprop(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()
var1.numpy()
9.683772

參考:

相關用法


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