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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。