| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 22 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 1 个月前 |
GeluGradV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
功能说明
-
算子功能:求geluv2函数梯度。
-
计算公式:
Gelu正向(其中x可以为标量或者Tensor):
Gelu(x)=x⋅Φ(x)=x/2⋅[1+erf(x/2)]Gelu(x)=x \cdot \Phi(x)=x/2 \cdot [1+erf(x/\sqrt{2})]
其中erf的计算公式为:
erf(x)=2π∑n=0∞(−1)n⋅x2n+1n!⋅(2n+1)erf(x)=\frac{2}{\sqrt \pi}\sum^{\infty}_{n=0}{\frac{(-1)^n \cdot x^{2n+1}}{n! \cdot (2n+1)}}
gradInput和gradOutput的关系可以表示为:
gradInput=gradOutput⋅(12+12⋅erf(x2)+x2π⋅e−x22)gradInput = gradOutput \cdot (\frac{1}{2}+\frac{1}{2} \cdot erf(\frac{x}{\sqrt2})+\frac{x}{\sqrt{2\pi}} \cdot e^{-\frac{x^2}{2}})
Gelu近似计算公式为:
Gelu(x)=0.5x(1+tanh(2/π(x+0.044715x3)))Gelu(x)=0.5x(1+tanh(\sqrt{2/\pi}(x+0.044715x^3)))
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 反向传播梯度 | FLOAT、FLOAT16、BFLOAT16 | ND、FRACTAL_NZ,NC1HWC0 |
| dy | 输入 | 与"x"具有相同的类型、格式和形状。 | FLOAT、FLOAT16、BFLOAT16 | ND、FRACTAL_NZ,NC1HWC0 |
| approximate | 属性 | 可选 | str | |
| z | 输出 | 公式中的输出张量 | FLOAT、FLOAT16、BFLOAT16 | ND、FRACTAL_NZ,NC1HWC0 |
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| Aclnn模式 | test_aclnn_gelu_backward_v2 | 通过Aclnn接口调用GeluGradV2算子aclnnGeluBackwardV2接口文档。 |
约束说明
无
贡献说明
| 贡献者 | 贡献方 | 贡献算子 | 贡献时间 | 贡献内容 |
|---|---|---|---|---|
| ilovescrapy | 个人开发者 | GeluGradV2 | 2026 | GeluGradV2算子适配开源仓 |