GLUGrad
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
-
接口功能:GLU的反向梯度计算。将输入张量self沿着指定的维度dim平均分成两个张量a和b,根据gradOut计算梯度。
-
计算公式:
∂GLU(a,b)∂(a,b)=cat(σ(b),σ(b)⊗a⊗(1−σ(b)))\frac{\partial GLU(a,b)}{\partial(a,b)}=cat(\sigma(b),\sigma(b) \otimes a \otimes (1-\sigma(b)))
数学计算表达式: 假设输出的GLUGrad有两部分组成:out=[a_grad, b_grad],则:
- sig_b=sigmoid(b)
- a_grad=grad_out*sig_b
- b_grad=a_grad*(a - a*sig_b)
其中:grad_out为梯度输出,a表示的是输入张量self根据指定dim进行均分后的前部分张量,b表示后半部分张量。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| grad_out | 输入 | 梯度输出张量。 | DOUBLE、FLOAT、FLOAT16、BFLOAT16 | ND |
| self | 输入 | 前向传播的输入张量。 | DOUBLE、FLOAT、FLOAT16、BFLOAT16 | ND |
| dim | 属性 | 表示要拆分输入self的维度。 | INT64 | - |
| out | 输出 | 梯度输出,shape与self一致。 | DOUBLE、FLOAT、FLOAT16、BFLOAT16 | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_glu_backward | 通过aclnnGluBackward接口方式调用GluGrad算子。 |