torch.linalg.matrix_norm¶
- torch.linalg.matrix_norm(A, ord='fro', dim=(-2, -1), keepdim=False, *, dtype=None, out=None) Tensor ¶
计算矩阵范数。
如果
A
是复数值,则计算A
.abs() 的范数。支持 float、double、cfloat 和 cdouble 数据类型。还支持矩阵的批次:范数将根据 2 元组
dim
指定的维度计算,其他维度将被视为批次维度。输出将具有相同的批次维度。ord
定义要计算的矩阵范数。支持以下范数ord
矩阵范数
‘fro’(默认)
Frobenius 范数
‘nuc’
核范数
inf
max(sum(abs(x), dim=1))
-inf
min(sum(abs(x), dim=1))
1
max(sum(abs(x), dim=0))
-1
min(sum(abs(x), dim=0))
2
最大奇异值
-2
最小奇异值
其中 inf 指的是 float(‘inf’)、NumPy 的 inf 对象或任何等效对象。
- 参数
- 关键字参数
out (Tensor, 可选) – 输出张量。如果为 None,则忽略。默认值: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])