当前位置: 首页 > news >正文

CANN/ops-nn THNN融合LSTM单元梯度

ThnnFusedLstmCellGrad

【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn

产品支持情况

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

功能说明

  • 算子功能:LSTMCell中四个门中matmul后剩余计算的反向传播,计算正向输出四个门激活前的值gates、输入cx、偏置b的梯度。

  • 计算公式:

变量定义

  • 输入梯度:$\delta h_t$ (gradHy), $\delta c_t$ (gradC)
  • 前向缓存:$i,f,g,o$ (各门激活值storage),$c_{t-1}$ (cx),$c_t$ (cy)
  • 输出梯度:$\delta a_i,\delta a_f,\delta a_g,\delta a_o$ (存入gradInGatesOut),$\delta c_{t-1}$ (gradCPrevOut)

第一阶段:中间梯度与状态回传

首先计算隐藏状态对细胞状态的贡献,并汇总得到当前时刻细胞的总梯度 $\text{grad_}c_{total}$:

$$ \begin{aligned} gcx &= \tanh(c_t) \ \text{grad_}c_{total} &= \delta h_t \cdot o \cdot (1 - gcx^2) + \delta c_t \ \delta c_{t-1} &= \text{grad_}c_{total} \cdot f \end{aligned} $$

第二阶段:门控分量梯度 (Pre-activation)

根据代码逻辑,各门控在进入激活函数前的梯度 $\delta a$ 计算如下:

$$ \begin{aligned} \delta a_o &= (\delta h_t \cdot gcx) \cdot o \cdot (1 - o) \ \delta a_i &= (\text{grad_}c_{total} \cdot g) \cdot i \cdot (1 - i) \ \delta a_f &= (\text{grad_}c_{total} \cdot c_{t-1}) \cdot f \cdot (1 - f) \ \delta a_g &= (\text{grad_}c_{total} \cdot i) \cdot (1 - g^2) \end{aligned} $$

第三阶段:参数梯度 (db)

**1. 偏置梯度 (db):**对 Batch 维度($N$)进行求和:

$$ \delta b = \sum_{n=1}^{N} \begin{bmatrix} \delta a_i \ \delta a_f \ \delta a_g \ \delta a_o \end{bmatrix}_n $$

  • 参数说明:
    参数名输入/输出/属性描述数据类型数据格式
    dhy输入
    • 表示LSTMCell正向输出隐藏状态的梯度。
    • shape为[batch,hidden_size]。
    FLOAT、FLOAT16ND
    dc输入
    • 表示LSTMCell正向输出细胞状态的梯度。
    • shape为[batch,hidden_size]。
    FLOAT、FLOAT16ND
    cx输入
    • 表示LSTMCell正向输入细胞状态。
    • shape为[batch,hidden_size]。
    FLOAT、FLOAT16ND
    cy输入
    • 表示LSTMCell正向输出细胞状态。
    • shape为[batch,hidden_size]。
    FLOAT、FLOAT16ND
    storage输入
    • 表示LSTMCell正向输出四个门的激活值。
    • shape为[batch, 4 * hidden_size]。
    FLOAT、FLOAT16ND
    dgates输出
    • 表示LSTMCell正向中四个门预激活值的梯度。
    • shape为[batch, 4 * hidden_size]。
    FLOAT、FLOAT16ND
    dc_prev输入
    • 表示LSTMCell正向中输入细胞状态的梯度。
    • shape为[batch,hidden_size]。
    FLOAT、FLOAT16ND
    db输入
    • 表示LSTMCell正向中输入偏置的梯度。
    • shape为[4 * hidden_size]。
    FLOAT、FLOAT16ND
    has_bias属性是否需要计算bias梯度。STRING-

约束说明

调用说明

调用方式样例代码说明
aclnn接口test_aclnn_thnn_fused_lstm_cell_grad.cpp通过aclnnThnnFusedLstmCellBackward接口方式调用ThnnFusedLstmCellGrad算子。

【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/794480/

相关文章:

  • 基于深度学习cnn的打架暴力识别 YOLOv11在暴力行为识别中的应用与研究 校园暴力识别
  • 2025最权威的降AI率网站实测分析
  • LinkedOM未来展望:三重链表DOM实现的创新之路
  • 向量自旋与维度退火:组合优化新方法解析
  • 2026年上饶AI智能营销怎么选 德知域科技实力测评 - 打我的的
  • 华为CANN GE动态宽高获取API
  • tf_unet 性能调优与模型部署:实现高效推理的 3 个关键策略
  • 基于OpenTelemetry的LLM应用可观测性实践:从黑盒到透明化
  • 2026国内知名合同纠纷律师口碑排行榜单 - 品牌排行榜
  • 室内机器人深度感知故障自校准技术解析
  • retrying错误处理完全指南:异常捕获与结果过滤的终极解决方案
  • Nitrox模组扩展开发终极指南:如何为Subnautica多人联机添加新功能
  • 软件设计原则之ISP接口隔离原则
  • 跨平台光标同步工具:技术原理、实现与多屏开发效率优化
  • 3分钟解锁音乐自由:ncmdump音乐格式转换终极指南
  • 为什么SharpShooter成为红队首选?深度剖析其优势与实战价值
  • repobase:基于元数据与声明式配置的代码仓库批量管理工具
  • Cursor AI 编辑器环境配置指南:从入门到精通的自动化配置实践
  • CANN/ge ACL设置Tensor格式
  • 3步实现智能自动化:三月七小助手如何每天为你节省90分钟游戏时间?
  • CANN/asc-devkit ReduceMax API参考
  • ghpm:GitHub仓库依赖管理的轻量级解决方案
  • 海鲜商城购物|基于SprinBoot+vue的海鲜商城系统(源码+数据库+文档)
  • 绝巧弃利之后,ABAP 才回到可升级的常道
  • 医疗设备智能警报系统设计与安全规范
  • 从绝圣弃智到少造机关,老子这一句放进 SAP HANA 开发里,讲的是把聪明收回到模型、数据和执行计划本身
  • StofDoctrineExtensionsBundle的IpTraceable扩展:自动记录用户IP地址的简单实现指南 [特殊字符]
  • AI赋能辅助生殖:深度学习如何革新胚胎评估与妊娠预测
  • 基于STM32HAL库的平衡小车设计(二)--CubeMX配置说明
  • CANN/ops-nn自适应层归一化算子