mindspore.nn.Norm

class mindspore.nn.Norm(axis=(), keep_dims=False)[源代码]

计算向量的范数,目前包括欧几里得范数,即 \(L_2\)-norm。

\[norm(x) = \sqrt{\sum_{i=1}^{n} (x_i^2)}\]
参数:
  • axis (Union[tuple, int]) - 指定计算向量范数的轴。默认值:()。

  • keep_dims (bool) - 如果为True,则 axis 中指定轴的维度大小为1。否则,axis 的维度将从输出shape中删除。默认值:False。

输入:
  • x (Tensor) - 输入任意维度Tensor,不为空。数据类型应为float16或float32。

输出:

Tensor,如果’keep_dims’为True,则将保留’axis’指定的维度且为1;否则,将移除’axis’中指定的维度。数据类型与 x 相同。

异常:
  • TypeError - axis 既不是int也不是tuple。

  • TypeError - keep_dims 不是bool。

支持平台:

Ascend GPU CPU

样例:

>>> net = nn.Norm(axis=0)
>>> x = Tensor(np.array([[4, 4, 9, 1], [2, 1, 3, 6]]), mindspore.float32)
>>> print(x.shape)
(2, 4)
>>> output = net(x)
>>> print(output)
[4.472136 4.1231055 9.486833 6.0827627]
>>> print(output.shape)
(4,)
>>> net = nn.Norm(axis=0, keep_dims=True)
>>> x = Tensor(np.array([[4, 4, 9, 1], [2, 1, 3, 6]]), mindspore.float32)
>>> print(x.shape)
(2, 4)
>>> output = net(x)
>>> print(output)
[4.472136 4.1231055 9.486833 6.0827627]
>>> print(output.shape)
(1, 4)
>>> net = nn.Norm(axis=1)
>>> x = Tensor(np.array([[4, 4, 9, 1], [2, 1, 3, 6]]), mindspore.float32)
>>> print(x.shape)
(2, 4)
>>> output = net(x)
>>> print(output)
[10.677078 7.071068]
>>> print(output.shape)
(2,)