評價此頁

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)

其他 intfloat

sum(abs(x)^{ord})^{(1 / ord)}

其中 inffloat(‘inf’)、NumPy 的 inf 物件或任何等效物件。

dtype 可用於以更精確的 dtype 執行計算。它在語義上等同於呼叫 linalg.vector_norm(x.to(dtype)),但在某些情況下會更快。

另請參閱

torch.linalg.matrix_norm() 計算矩陣範數。

引數
  • x (Tensor) – 張量,預設展平,但可以使用 dim 控制此行為。(注意:關鍵字引數 input 也可以用作 x 的別名。)

  • ord (int, float, inf, -inf, 'fro', 'nuc', optional) – 範數的階數。預設為 2

  • dim (int, Tuple[int], optional) – 計算範數的維度。有關 dim= None 時的行為,請參見上文。預設為 None

  • keepdim (bool, optional) – 如果設定為 True,則縮減的維度將保留在結果中,大小為一。預設為 False

關鍵字引數
  • 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)