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


Python mxnet.symbol.sparse.ftrl_update用法及代碼示例


用法:

mxnet.symbol.sparse.ftrl_update(weight=None, grad=None, z=None, n=None, lr=_Null, lamda1=_Null, beta=_Null, wd=_Null, rescale_grad=_Null, clip_gradient=_Null, name=None, attr=None, out=None, **kwargs)

參數

  • weight(Symbol) - 重量
  • grad(Symbol) - 坡度
  • z(Symbol) - z
  • n(Symbol) - 畢業廣場
  • lr(float, required) - 學習率
  • lamda1(float, optional, default=0.00999999978) - L1 正則化係數。
  • beta(float, optional, default=1) - Per-Coordinate 學習率測試版。
  • wd(float, optional, default=0) - 權重衰減通過懲罰大權重的正則化項來增強目標函數。懲罰與每個權重大小的平方成比例。
  • rescale_grad(float, optional, default=1) - 將漸變重新縮放為 grad = rescale_grad*grad。
  • clip_gradient(float, optional, default=-1) - 將漸變剪裁到 [-clip_gradient, clip_gradient] 的範圍內 如果clip_gradient <= 0,漸變剪裁被關閉。畢業 = 最大(最小(畢業,clip_gradient),-clip_gradient)。
  • name(string, optional.) - 結果符號的名稱。

返回

結果符號。

返回類型

Symbol

Ftrl 優化器的更新函數。引用自 Ad Click Prediction: a View from the Trenches ,可在 http://dl.acm.org/citation.cfm?id=2488200 獲得。

它使用以下方法更新權重:

rescaled_grad = clip(grad * rescale_grad, clip_gradient)
z += rescaled_grad - (sqrt(n + rescaled_grad**2) - sqrt(n)) * weight / learning_rate
n += rescaled_grad**2
w = (sign(z) * lamda1 - z) / ((beta + sqrt(n)) / learning_rate + wd) * (abs(z) > lamda1)

如果 w、z 和 n 都是 row_sparse 存儲類型,則僅更新索引出現在 grad.indices 中的行切片(對於 w、z 和 n):

for row in grad.indices:
    rescaled_grad[row] = clip(grad[row] * rescale_grad, clip_gradient)
    z[row] += rescaled_grad[row] - (sqrt(n[row] + rescaled_grad[row]**2) - sqrt(n[row])) * weight[row] / learning_rate
    n[row] += rescaled_grad[row]**2
    w[row] = (sign(z[row]) * lamda1 - z[row]) / ((beta + sqrt(n[row])) / learning_rate + wd) * (abs(z[row]) > lamda1)

相關用法


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