torch.linalg 矩阵范数

torch.linalg.matrix_norm(A, ord='fro', dim=(-2, -1), keepdim=False, *, dtype=None, out=None) Tensor

计算矩阵的范数。

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

支持浮点数、双精度浮点数、复数浮点数和复数双精度浮点数的数据类型作为输入。还支持矩阵批次:范数将在由 2 元组 dim 指定的维度上进行计算,而其他维度将被视为批处理维度。输出将保留相同的批处理维度。

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

ord

矩阵范数

“fro”(默认值)

Frobenius 范数

“nuc”

核范数

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

max(sum(abs(x), dim=1))

-∞

min(sum(abs(x), dim=1))

1

max(sum(abs(x), dim=0))

-1

min(sum(abs(x), dim=0)) (表示先对x取绝对值,然后沿维度0求和,最后取最小值)

2

最大的奇异值

-2

最小奇异值

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

参数
  • A (Tensor) – 具有两个或更多维度的张量。默认情况下,其形状被解释为(*, m, n),其中*表示零个或多个批次维度。但是,可以通过使用dim来控制这种行为。

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

  • dim (Tuple[int, int], optional) – 指定计算范数的维度。默认值: (-2, -1)

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

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

  • dtype (torch.dtype, 可选) – 如果指定了,输入张量在执行操作前会被转换为 dtype 类型,并且返回的张量类型也将是 dtype。默认值: None

返回值

这是一个实值张量,即便在A为复数的情况下也成立。

示例:

>>> from torch import linalg as LA
>>> A = torch.arange(9, dtype=torch.float).reshape(3, 3)
>>> A
tensor([[0., 1., 2.],
        [3., 4., 5.],
        [6., 7., 8.]])
>>> LA.matrix_norm(A)
tensor(14.2829)
>>> LA.matrix_norm(A, ord=-1)
tensor(9.)
>>> B = A.expand(2, -1, -1)
>>> B
tensor([[[0., 1., 2.],
        [3., 4., 5.],
        [6., 7., 8.]],

        [[0., 1., 2.],
        [3., 4., 5.],
        [6., 7., 8.]]])
>>> LA.matrix_norm(B)
tensor([14.2829, 14.2829])
>>> LA.matrix_norm(B, dim=(0, 2))
tensor([ 3.1623, 10.0000, 17.2627])
本页目录