vector_norm

paddle.linalg.vector_norm(x, p=2.0, axis=None, keepdim=False, name=None):

将计算给定 Tensor 的向量范数。具体用法请参见 norm

参数

  • x (Tensor) - 输入 Tensor。维度为多维,数据类型为 float32 或 float64。

  • p (int|float,可选) - 范数(ord)的种类。目前支持的值为任何实数 p 对应的 p 范数。默认值为 2.0 。

  • axis (int|list|tuple,可选) - 使用范数计算的轴。如果 axis 为 None,则忽略 input 的维度,将其当做向量来计算。如果 axis 为 int 或者 list|tuple,计算 Tensor 对应 axis 上的向量范数。默认值为 None

  • keepdim (bool,可选) - 是否在输出的 Tensor 中保留和输入一样的维度,默认值为 False。当 keepdim 为 False 时,输出的 Tensor 会比输入 input 的维度少一些。

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

Tensor,在指定 axis 上进行范数计算的结果,与输入 input 数据类型相同。

代码示例

>>> import paddle
>>> import numpy as np
>>> x = paddle.arange(24, dtype="float32").reshape([2, 3, 4]) - 12
>>> print(x)
Tensor(shape=[2, 3, 4], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[-12., -11., -10., -9. ],
  [-8. , -7. , -6. , -5. ],
  [-4. , -3. , -2. , -1. ]],
 [[ 0. ,  1. ,  2. ,  3. ],
  [ 4. ,  5. ,  6. ,  7. ],
  [ 8. ,  9. ,  10.,  11.]]])
>>> out_vector_norm = paddle.linalg.vector_norm(x=x,p=2,axis=None,keepdim=False)
>>> print(out_vector_norm)
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
34.)
>>> out_vector_norm = paddle.linalg.vector_norm(x=x,p=0,axis=[0,1],keepdim=False)
>>> print(out_vector_norm)
Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
[5., 6., 6., 6.])
>>> out_vector_norm = paddle.linalg.vector_norm(x=x,p=float("inf"),axis=[1,2],keepdim=False)
>>> print(out_vector_norm)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[12., 11.])
>>> out_vector_norm = paddle.linalg.vector_norm(x=x,p=1,axis=1,keepdim=False)
>>> print(out_vector_norm)
Tensor(shape=[2, 4], dtype=float32, place=Place(cpu), stop_gradient=True,
[[24., 21., 18., 15.],
 [12., 15., 18., 21.]])