ApplyAdamD

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品
Atlas 训练系列产品

功能说明

  • 算子功能:根据Adam算法更新变量"var"。此算子与ApplyAdam计算逻辑相同,但额外输出更新后的m和v。

  • 计算公式:

    lr=learning_rate×1−beta2_power1−beta1_powerlr = learning\_rate \times \frac{\sqrt{1 - beta2\_power}}{1 - beta1\_power}

    m=m+(1−beta1)×(grad−m)m = m + (1 - beta1) \times (grad - m)

    v=v+(1−beta2)×(grad×grad−v)v = v + (1 - beta2) \times (grad \times grad - v)

    • 若use_nesterov = True:

      var=var−lr×m×beta1+(1−beta1)×gradϵ+vvar = var - lr \times \frac{m \times beta1 + (1 - beta1) \times grad}{\epsilon + \sqrt{v}}

    • 若use_nesterov = False:

      var=var−lr×mϵ+vvar = var - lr \times \frac{m}{\epsilon + \sqrt{v}}

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
var 输入 待更新的参数张量,应来自Variable。 BFLOAT16、FLOAT16、FLOAT ND
m 输入 一阶矩估计,应来自Variable。 BFLOAT16、FLOAT16、FLOAT ND
v 输入 二阶矩估计,应来自Variable。 BFLOAT16、FLOAT16、FLOAT ND
beta1_power 输入 beta1的幂次,标量。 BFLOAT16、FLOAT16、FLOAT ND
beta2_power 输入 beta2的幂次,标量。 BFLOAT16、FLOAT16、FLOAT ND
lr 输入 学习率,标量。 BFLOAT16、FLOAT16、FLOAT ND
beta1 输入 一阶矩估计的衰减率,标量。 BFLOAT16、FLOAT16、FLOAT ND
beta2 输入 二阶矩估计的衰减率,标量。 BFLOAT16、FLOAT16、FLOAT ND
epsilon 输入 用于数值稳定性的小常数,标量。 BFLOAT16、FLOAT16、FLOAT ND
grad 输入 梯度张量。 BFLOAT16、FLOAT16、FLOAT ND
use_locking 属性 是否使用锁机制保护更新操作,默认为False。 Bool -
use_nesterov 属性 是否使用Nesterov加速梯度,默认为False。 Bool -
var 输出 更新后的参数张量。 BFLOAT16、FLOAT16、FLOAT ND
m 输出 更新后的一阶矩估计。 BFLOAT16、FLOAT16、FLOAT ND
v 输出 更新后的二阶矩估计。 BFLOAT16、FLOAT16、FLOAT ND

约束说明

输入张量必须具有相同的形状。

调用说明

调用方式 调用样例 说明
图模式调用 test_geir_apply_adam_d 通过算子IR构图方式调用ApplyAdamD算子。