aclnnLstmBackward
产品支持情况
功能说明
算子功能:LSTM的反向传播,计算正向输入input、权重params、初始状态hx的梯度。
计算公式:
[object Object][object Object]undefined
其中:
- 是 sigmoid 函数
- 表示逐元素乘法 (Hadamard product)
- 是可学习的权重矩阵
- 是可学习的偏置项[object Object]
- 总损失:
- 隐藏状态梯度:
- 细胞状态梯度:[object Object]
- 初始化
循环 到
1.当前隐藏状态梯度
2.当前细胞状态梯度
3.门控梯度计算
4.参数梯度累加
5.传播到前一时刻
6.更新传播变量
细胞状态梯度推导
其中:
遗忘门梯度推导
参数梯度推导
LSTM 梯度流动特性
长程依赖处理
- :第 层的隐藏状态(,其中 为总层数)
- :损失函数
- :损失函数对第 层隐藏状态的梯度
核心传播公式
梯度从顶层()向底层()传播,层间关系由链式法则给出:
其中:
- :当前层 的梯度(已由上一层反向传播得到)
- :第 层隐藏状态对第 层隐藏状态的雅可比矩阵
- :矩阵乘法(梯度传播本质为向量-矩阵乘法)
即每层的输出的梯度dx为上一层输入的梯度dy。
[object Object]
函数原型
每个算子分为,必须先调用“aclnnLstmBackwardGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnLstmBackward”接口执行计算。
[object Object]
[object Object]
aclnnLstmBackwardGetWorkspaceSize
aclnnLstmBackward
约束说明
确定性计算:
- aclnnLstmBackward默认确定性实现。
边界值场景说明:
- 当输入是Inf时,输出为NAN。
- 当输入是NaN时,输出为NaN。
调用示例
[object Object]