mindspore.ops.LayerNorm
- class mindspore.ops.LayerNorm(begin_norm_axis=1, begin_params_axis=1, epsilon=1e-7)[源代码]
在输入Tensor上应用层归一化(Layer Normalization)。
此算子将在给定的轴上对输入进行层归一化。Layer Normalization 描述了LayerNorm。
其中
是Scalar, 是偏置项, 是精度值。- 参数:
begin_norm_axis (int) - 指定 input_x 需进行层归一化的起始维度,其值必须在[-1, rank(input_x))范围内。默认值:
1
。begin_params_axis (int) - 指定输入参数(gamma, beta) 需进行层归一化的开始轴,其值必须在[-1, rank(input_x))范围内。默认值:
1
。注:在Ascend平台, begin_params_axis 和 begin_norm_axis 的值需相等。epsilon (float) - 添加到分母中的值(
),以确保数据稳定性。默认值:1e-7
。
- 输入:
input_x (Tensor) - LayerNorm的输入,shape为
的Tensor。支持的数据类型:float16、float32、float64。gamma (Tensor) - 可学习参数
,shape为 input_x_shape[begin_params_axis:] 的Tensor。支持的数据类型:float16、float32、float64。beta (Tensor) - 可学习参数
,shape为 input_x_shape[begin_params_axis:] 的Tensor。支持的数据类型:float16、float32、float64。
- 输出:
tuple[Tensor],3个Tensor组成的tuple,层归一化输入和更新后的参数。
output_x (Tensor) - 层归一化输入,数据类型和shape与 input_x 相同。
mean (Tensor) - 输入的均值,其shape的前 begin_norm_axis 维与 input_x 相同,其余维度为1。假设输入 input_x 的shape为
, 输出 mean 的shape为 (当 begin_norm_axis=0 时, mean shape为 )。rstd (Tensor) - 输入的标准差的倒数,shape同 mean 一致。
- 异常:
TypeError - begin_norm_axis 或 begin_params_axis 不是int。
TypeError - epsilon 不是float。
TypeError - input_x、gamma 或 beta 不是Tensor。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, ops >>> input_x = Tensor(np.array([[1, 2, 3], [1, 2, 3]]), mindspore.float32) >>> gamma = Tensor(np.ones([3]), mindspore.float32) >>> beta = Tensor(np.ones([3]), mindspore.float32) >>> layer_norm = ops.LayerNorm() >>> output, _, _ = layer_norm(input_x, gamma, beta) >>> print(output) [[-0.2247448 1. 2.2247448] [-0.2247448 1. 2.2247448]]