torch.linalg.vector_norm#
- torch.linalg.vector_norm(x, ord=2, dim=None, keepdim=False, *, dtype=None, out=None) Tensor#
計算向量範數。
如果
x是複數,則計算x.abs() 的範數。支援浮點、雙精度、復浮點和復雙精度資料型別的輸入。
此函式不一定將多維
x視為向量批次,而是如果
dim= None,則在計算範數之前x將被展平。如果
dim是一個 int 或一個 tuple,則將在此維度上計算範數,其他維度將被視為批次維度。
此行為是為了與
torch.linalg.norm()保持一致。ord定義了計算的向量範數。支援以下範數:ord向量範數
2 (預設)
2-範數(見下文)
inf
max(abs(x))
-inf
min(abs(x))
0
sum(x != 0)
其他 int 或 float
sum(abs(x)^{ord})^{(1 / ord)}
其中 inf 指 float(‘inf’)、NumPy 的 inf 物件或任何等效物件。
dtype可用於以更精確的 dtype 執行計算。它在語義上等同於呼叫linalg.vector_norm(x.to(dtype)),但在某些情況下會更快。另請參閱
torch.linalg.matrix_norm()計算矩陣範數。- 引數
- 關鍵字引數
out (Tensor, optional) – 輸出張量。如果為 None 則忽略。預設為 None。
dtype (
torch.dtype, optional) – 用於執行累積和返回的型別。如果指定,則在執行操作之前將x轉換為dtype,並且返回的張量的型別將是dtype(如果為實數),或者是其對應實數型別(如果為複數)。如果x是複數,則dtype也可以是複數,否則必須是實數。x應該可以無損地轉換為dtype。預設為 None。
- 返回
一個實值張量,即使
x是複數。
示例
>>> from torch import linalg as LA >>> a = torch.arange(9, dtype=torch.float) - 4 >>> a tensor([-4., -3., -2., -1., 0., 1., 2., 3., 4.]) >>> B = a.reshape((3, 3)) >>> B tensor([[-4., -3., -2.], [-1., 0., 1.], [ 2., 3., 4.]]) >>> LA.vector_norm(a, ord=3.5) tensor(5.4345) >>> LA.vector_norm(B, ord=3.5) tensor(5.4345)