文件最后提交记录最后更新时间
17 天前
1 天前
23 天前
1 天前
5 天前
1 天前
23 天前
1 天前
README

SparseApplyAdagradV2

产品支持情况

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

功能说明

  • 算子功能:SparseApplyAdagradV2是稀疏版本的AdagradV2优化器算子,根据稀疏梯度和索引向量原地更新参数变量和累加器。

  • 计算公式:

accum[index]+=grad[i]×grad[i](when update_slots=True)\text{accum}[\text{index}] \mathrel{+}= \text{grad}[i] \times \text{grad}[i] \quad (\text{when update\_slots=True})

var[index]−=lr×grad[i]accum[index]+ϵ\text{var}[\text{index}] \mathrel{-}= \text{lr} \times \frac{\text{grad}[i]}{\sqrt{\text{accum}[\text{index}]} + \epsilon}

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
var 输入 参数变量,shape (N, C) FLOAT ND
accum 输入 梯度平方累加器,shape (N, C) FLOAT ND
lr 输入 学习率标量 FLOAT ND
epsilon 输入 常数因子标量,避免除零 FLOAT ND
grad 输入 稀疏梯度,shape (M, C) FLOAT ND
indices 输入 稀疏索引向量,shape (M) INT32 ND
var 输出 更新后的参数变量,shape (N, C) FLOAT ND
accum 输出 更新后的累加器,shape (N, C) FLOAT ND
use_locking 属性 是否在更新时加锁(NPU场景下通常忽略) Bool -
update_slots 属性 是否更新累加器(True时accum+=grad^2) Bool -

约束说明

  • var 和 accum 的 shape 必须相同
  • lr 和 epsilon 必须为标量(shape 为空或 [1])
  • indices 必须为一维向量
  • grad 的第一维必须与 indices 的第一维相同,其余维度必须与 var 的对应维度相同
  • var、accum、lr、epsilon、grad 的 dtype 必须相同
  • indices 的 dtype 为 int32
  • 越界索引(< 0 或 >= var 行数)将被跳过,不报错
  • 当indices有重复索引值的时候,结果不保序

调用说明

调用方式 调用样例 说明
图模式调用 test_geir_sparse_apply_adagrad_v2 参见算子调用完成算子编译和验证。