当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python mxnet.symbol.adam_update用法及代码示例


用法:

mxnet.symbol.adam_update(weight=None, grad=None, mean=None, var=None, lr=_Null, beta1=_Null, beta2=_Null, epsilon=_Null, wd=_Null, rescale_grad=_Null, clip_gradient=_Null, lazy_update=_Null, name=None, attr=None, out=None, **kwargs)

参数

  • weight(Symbol) - 重量
  • grad(Symbol) - 坡度
  • mean(Symbol) - 移动均值
  • var(Symbol) - 移动方差
  • lr(float, required) - 学习率
  • beta1(float, optional, default=0.899999976) - 一阶矩估计的衰减率。
  • beta2(float, optional, default=0.999000013) - 二阶矩估计的衰减率。
  • epsilon(float, optional, default=9.99999994e-09) - 数值稳定性的小常数。
  • 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)。
  • lazy_update(boolean, optional, default=1) - 如果为 true,如果梯度的 stype 为 row_sparse 并且所有 w、m 和 v 具有相同的 stype,则应用延迟更新
  • name(string, optional.) - 结果符号的名称。

返回

结果符号。

返回类型

Symbol

Adam 优化器的更新函数。 Adam 被视为 AdaGrad 的推广。

Adam 更新包括以下步骤,其中 g 表示梯度,m、v 是一阶和二阶矩估计(均值和方差)。

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

m = beta1*m + (1-beta1)*grad
v = beta2*v + (1-beta2)*(grad**2)
w += - learning_rate * m / (sqrt(v) + epsilon)

但是,如果grad的存储类型为row_sparselazy_update为True,并且权重的存储类型与m和v相同,则只更新索引出现在grad.indices中的row slice(对于w,m五):

for row in grad.indices:
    m[row] = beta1*m[row] + (1-beta1)*grad[row]
    v[row] = beta2*v[row] + (1-beta2)*(grad[row]**2)
    w[row] += - learning_rate * m[row] / (sqrt(v[row]) + epsilon)

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.symbol.adam_update。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。