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 等資料類型作為輸入。也支援矩陣批次處理:範數會針對由二元組
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])