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


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


用法:

class mxnet.optimizer.SGD(momentum=0.0, lazy_update=True, **kwargs)

参数

  • momentum(float, optional) - 动量值。
  • lazy_update(bool, optional) - 默认为真。如果为 True,如果 weight 和 grad 的存储类型都是,则应用延迟更新row_sparse.
  • multi_precision(bool, optional) - 控制优化器内部精度的标志。 False:导致使用与权重相同的精度(默认),True:制作权重的内部 32 位副本并以 32 位精度应用梯度,即使模型中使用的实际权重精度较低。在使用 float16 进行训练时,打开它可以提高收敛性和准确性。

基础:mxnet.optimizer.optimizer.Optimizer

具有动量和权重衰减的 SGD 优化器。

如果 grad 的存储类型是row_sparselazy_update是真的,懒惰更新申请者:

for row in grad.indices:
    rescaled_grad[row] = lr * (rescale_grad * clip(grad[row], clip_gradient) + wd * weight[row])
    state[row] = momentum[row] * state[row] + rescaled_grad[row]
    weight[row] = weight[row] - state[row]

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

update_on_kvstore 设置为 False 的情况下(通过 MXNET_UPDATE_ON_KVSTORE=0 全局环境变量或作为 Trainer 中的参数),SGD 优化器可以执行参数的聚合更新,这可能会提高性能。聚合大小由 MXNET_OPTIMIZER_AGGREGATION_SIZE 环境变量控制,默认为 4。

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

rescaled_grad = lr * (rescale_grad * clip(grad, clip_gradient) + wd * weight)
state = momentum * state + rescaled_grad
weight = weight - state

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

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

相关用法


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