torch.linalg.vector_norm

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

计算向量的范数。

如果 x 是复数类型,它会计算 x 的范数(即 .abs()

支持浮点型、双精度型、复数浮点型和复数双精度型数据类型的输入。

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

  • 如果 dimNone,则在计算范数之前会将 x 展平。

  • 如果 diminttuple,范数将在这些维度上进行计算,其余维度则会被视为批次维度。

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

ord 定义了要计算的向量范数。支持的范数包括:

ord

向量范数

2 (默认值)

2-范数(参见下文)

inf 由于这里的修改目标是为了使句子更自然、更符合中文习惯,但给定的内容仅为一个标签“inf”,在不改变其意义和结构的前提下,保持原样最为合适。因此直接返回原文: inf

max(|x|)

-∞

min(|x|)

0

sum(x ≠ 0)

其他 intfloat 类型

(∑(abs(x)ord)(1 / ord)

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

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

参见

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

参数
  • x (Tensor) – 张量,默认会进行展平操作,但可以通过设置dim参数来改变这一行为。

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

  • dim (int, Tuple[int], optional) – 计算范数的维度。当 dim=None 时,请参见上述说明。默认值: None

  • keepdim (bool, optional) – 如果设置为True,则减少的维度将保留在结果中作为大小为一的维度。默认值: False

关键字参数
  • out (Tensor, optional) – 输出张量。默认为None,若未指定则忽略。

  • dtype (torch.dtype, 可选) – 用于执行累加和返回结果的数据类型。如果指定了 x,则在操作前将其转换为 dtype 类型,并且返回的张量将根据 dtype 是实数还是复数来确定其类型。如果 x 本身是复数,则 dtype 可以是复数,否则必须为实数。x 应该可以转换成 dtype 而不会导致精度降低。默认值:None

返回值

这是一个实值张量,即便在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)
本页目录