CANN ops-nn ApplyAdagradD算子
ApplyAdagradD
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | |
| Atlas 推理系列产品 | |
| Atlas 训练系列产品 |
功能说明
算子功能:ApplyAdagradD 是 Adagrad 优化器的参数更新算子,用于根据梯度、学习率和累加平方梯度更新参数。
计算公式:
$$ accum = accum + grad * grad $$
$$ var = var - lr * grad * (1 / sqrt(accum)) $$
当
update_slots为false时,accum不累加grad * grad,仅使用输入accum更新var。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| var | 输入 | 待更新的参数张量。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| accum | 输入 | 累加的平方梯度张量。与"var"具有相同类型和shape。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| lr | 输入 | 学习率张量。shape为{1},与"var"具有相同类型。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| grad | 输入 | 梯度张量。与"var"具有相同类型和shape。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| var | 输出 | 更新后的参数张量。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| accum | 输出 | 更新后的累加平方梯度张量。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| update_slots | 属性 | 是否更新"accum",默认值为true。 | BOOL | - |
| use_locking | 属性 | 是否使用锁,当前无特殊并发控制实现,默认值为false。 | BOOL | - |
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| 图模式 | test_geir_apply_adagrad_d.cpp | 通过算子IR构图调用ApplyAdagradD算子。 |
| aclnn | test_aclnn_apply_adagrad_d.cpp | 通过aclnn接口调用ApplyAdagradD算子。 |
aclnn接口
aclnnStatus aclnnApplyAdagradDGetWorkspaceSize( const aclTensor* var, const aclTensor* accum, const aclTensor* lr, const aclTensor* grad, bool updateSlots, bool useLocking, uint64_t* workspaceSize, aclOpExecutor** executor); aclnnStatus aclnnApplyAdagradD( void* workspace, uint64_t workspaceSize, aclOpExecutor* executor, const aclrtStream stream);约束与限制
var、accum、grad的shape和数据类型必须一致。lr必须为标量张量,shape为{1}。- 仅支持ND数据格式。
- 空tensor支持no-op执行。
use_locking当前无特殊并发控制实现。- FLOAT16、BFLOAT16输入会提升至FLOAT计算后再转回原类型。
贡献说明
| 贡献者 | 贡献方 | 贡献算子 | 贡献时间 | 贡献内容 |
|---|---|---|---|---|
| Tream | 个人开发者 | ApplyAdagradD | 2026/05/29 | ApplyAdagradD算子适配开源仓 |
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
