StatelessNormal
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | × |
| Atlas A2系列产品 | × |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | × |
| Atlas训练系列产品 | × |
功能说明
-
算子功能:根据指定的均值(mean)和标准差(stdev)生成服从正态分布的随机数张量,使用基于计数器的Philox4x32-10随机数生成算法和Box-Muller变换,严格对标GPU精度(相同seed+offset产生相同随机序列),支持mean和stdev为标量或张量。
-
计算公式:
y=BoxMuller(Philox(seed,offset))×stdev+meany = BoxMuller(Philox(seed, offset)) \times stdev + mean
其中mean、stdev为标量或张量。当为张量时,仅第0项参与计算,所有输出元素共用这组均值和标准差,其余元素不参与计算。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| shape | 输入 | 输出张量的形状。 | INT64 | ND |
| seed | 输入 | Philox随机数生成器的种子。 | INT64 | ND |
| offset | 输入 | Philox随机数生成器的偏移量,必须为4的倍数。 | INT64 | ND |
| mean | 输入 | 正态分布的均值,支持标量或张量。当为张量时,仅第0项参与计算,所有输出元素共用该均值。 | FLOAT、FLOAT16、BF16 | ND |
| stdev | 输入 | 正态分布的标准差,支持标量或张量。当为张量时,仅第0项参与计算,所有输出元素共用该标准差。 | FLOAT、FLOAT16、BF16 | ND |
| y | 输出 | 输出指定形状的正态分布随机值。 | FLOAT、BF16、FLOAT16 | ND |
约束说明
- offset必须为4的倍数。
- mean和stdev的数据类型与输出y锁步一致。
- mean和stdev为tensor时,仅第0项参与计算,所有输出元素共用这组均值和标准差,其余元素不参与计算。
- 仅支持SIMT编程模型(Ascend 950系列)。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_stateless_normal.cpp | 通过aclnnInplaceNormal接口方式调用StatelessNormal算子,mean和stdev均为标量。 |