mindspore.ops.LayerNorm

查看源文件
class mindspore.ops.LayerNorm(begin_norm_axis=1, begin_params_axis=1, epsilon=1e-7)[源代码]

在输入Tensor上应用层归一化(Layer Normalization)。

此算子将在给定的轴上对输入进行层归一化。Layer Normalization 描述了LayerNorm。

y=xmeanvariance+ϵγ+β

其中 γ 是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_axisbegin_norm_axis 的值需相等。

  • epsilon (float) - 添加到分母中的值(ϵ),以确保数据稳定性。默认值: 1e-7

输入:
  • input_x (Tensor) - LayerNorm的输入,shape为 (N,) 的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为 (x1,x2,,xR) , 输出 mean 的shape为 (x1,,xbegin_norm_axis,1,,1) (当 begin_norm_axis=0 时, mean shape为 (1,,1) )。

  • rstd (Tensor) - 输入的标准差的倒数,shape同 mean 一致。

异常:
  • TypeError - begin_norm_axisbegin_params_axis 不是int。

  • TypeError - epsilon 不是float。

  • TypeError - input_xgammabeta 不是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]]