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, optional) – 輸出張量。如果為 None 則忽略。預設值:None。
dtype (
torch.dtype, optional) – 如果指定,輸入張量在執行操作前將被轉換為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])