Shortcuts

torch.linalg.vector_norm

torch.linalg.vector_norm(x, ord=2, dim=None, keepdim=False, *, dtype=None, out=None) 张量

计算向量范数。

如果 x 是复数值,它计算 x.abs() 的范数

支持float、double、cfloat和cdouble数据类型的输入。

此函数不一定将多维 x 视为向量的批次,而是:

  • 如果 dim= Nonex 将在计算范数之前被展平。

  • 如果 dim 是一个 int 或一个 tuple,范数将在这几个维度上计算,而其他维度将被视为批次维度。

此行为与 torch.linalg.norm() 保持一致。

ord 定义了计算的向量范数。支持以下范数:

ord

向量范数

2(默认)

2-范数(见下文)

无穷大

最大值(绝对值(x))

-无穷大

最小值(绝对值(x))

0

sum(x != 0)

其他 intfloat

sum(abs(x)^{ord})^{(1 / ord)}

其中 inf 指的是 float(‘inf’)、NumPy 的 inf 对象,或任何等效的对象。

dtype 可以用于在更精确的数据类型中执行计算。 它在语义上等同于调用 linalg.vector_norm(x.to(dtype)) 但在某些情况下速度更快。

另请参阅

torch.linalg.matrix_norm() 计算矩阵范数。

Parameters
  • x (张量) – 张量,默认情况下是展平的,但可以通过使用dim来控制此行为。

  • ord (int, float, inf, -inf, 'fro', 'nuc', 可选) – 范数的阶。默认值: 2

  • dim (int, Tuple[int], optional) – 计算范数的维度。当 dim= None 时的行为见上文。 默认值: None

  • keepdim (布尔值, 可选) – 如果设置为True,减少的维度将在结果中保留,尺寸为1。默认值:False

Keyword Arguments
  • 输出 (张量, 可选) – 输出张量。如果为,则忽略。默认值:

  • dtype (torch.dtype, 可选) – 用于执行累加和返回的类型。 如果指定,x 在执行操作之前会被转换为 dtype, 并且返回的张量的类型将是 dtype(如果是实数)或其对应的实数类型(如果是复数)。 dtype 可以是复数,如果 x 是复数,否则它必须是实数。 x 应该可以在不缩小的情况下转换为 dtype。默认值:None

Returns

一个实值张量,即使 x 是复数。

示例:

>>> from torch import linalg as LA
>>> a = torch.arange(9, dtype=torch.float) - 4
>>> a
tensor([-4., -3., -2., -1.,  0.,  1.,  2.,  3.,  4.])
>>> B = a.reshape((3, 3))
>>> B
tensor([[-4., -3., -2.],
        [-1.,  0.,  1.],
        [ 2.,  3.,  4.]])
>>> LA.vector_norm(a, ord=3.5)
tensor(5.4345)
>>> LA.vector_norm(B, ord=3.5)
tensor(5.4345)