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


Python mxnet.optimizer.Adam用法及代码示例


用法:

class mxnet.optimizer.Adam(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, lazy_update=True, **kwargs)

参数

  • beta1(float, optional) - 一阶矩估计的 index 衰减率。
  • beta2(float, optional) - 二阶矩估计的 index 衰减率。
  • epsilon(float, optional) - 小值以避免除以 0。
  • lazy_update(bool, optional) - 默认为真。如果为 True,如果 weight 和 grad 的存储类型都是,则应用延迟更新row_sparse.

基础:mxnet.optimizer.optimizer.Optimizer

亚当优化器。

此类实现 Adam: A Method for Stochastic Optimization 中说明的优化器,可在 http://arxiv.org/abs/1412.6980 获得。

如果 grad 的存储类型是row_sparse, 和lazy_update是真的,懒惰更新在步骤 t 应用:

for row in grad.indices:
    rescaled_grad[row] = clip(grad[row] * rescale_grad + wd * weight[row], clip_gradient)
    m[row] = beta1 * m[row] + (1 - beta1) * rescaled_grad[row]
    v[row] = beta2 * v[row] + (1 - beta2) * (rescaled_grad[row]**2)
    lr = learning_rate * sqrt(1 - beta1**t) / (1 - beta2**t)
    w[row] = w[row] - lr * m[row] / (sqrt(v[row]) + epsilon)

延迟更新仅更新其 row_sparse 梯度索引出现在当前批次中的权重的均值和 var,而不是为所有索引更新它。与原始更新相比,它可以为某些应用程序提供模型训练吞吐量的较大改进。但是,它提供的语义与原始更新略有不同,并可能导致不同的经验结果。

否则,通过以下方式应用步骤 t 的标准更新:

rescaled_grad = clip(grad * rescale_grad + wd * weight, clip_gradient)
m = beta1 * m + (1 - beta1) * rescaled_grad
v = beta2 * v + (1 - beta2) * (rescaled_grad**2)
lr = learning_rate * sqrt(1 - beta1**t) / (1 - beta2**t)
w = w - lr * m / (sqrt(v) + epsilon)

除了 Optimizer 接受的参数之外,此优化器还接受以下参数。

有关更新算法的详细信息,请参阅 adam_update

相关用法


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