torch.linalg.matrix_norm#
- 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
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])