捷徑

torch.linalg.matrix_power

torch.linalg.matrix_power(A, n, *, out=None) Tensor

計算整數 n 的平方矩陣的 n 次方。

支援 float、double、cfloat 和 cdouble dtypes 的輸入。 也支援矩陣批次,如果 A 是一批矩陣,則輸出具有相同的批次維度。

如果 n= 0,則傳回與 A 相同形狀的單位矩陣(或批次)。如果 n 為負數,則傳回每個矩陣(如果可逆)的倒數,其次方為 abs(n)

注意

如果可能,請考慮使用 torch.linalg.solve() 從左側將矩陣乘以負數次方,因為如果 n> 0

torch.linalg.solve(matrix_power(A, n), B) == matrix_power(A, -n)  @ B

在可能的情況下,始終首選使用 solve(),因為它比顯式計算 AnA^{-n} 更快且數值上更穩定。

另請參閱

torch.linalg.solve() 使用數值穩定的演算法計算 A.inverse() @ B

參數
  • A (Tensor) – 形狀為 (*, m, m) 的張量,其中 * 為零個或多個批次維度。

  • n (int) – 指數。

關鍵字參數

out (Tensor, optional) – 輸出張量。如果 None,則忽略。預設值:None

引發

RuntimeError – 如果 n< 0 且矩陣 A 或批次矩陣 A 中的任何矩陣不可逆。

範例

>>> A = torch.randn(3, 3)
>>> torch.linalg.matrix_power(A, 0)
tensor([[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]])
>>> torch.linalg.matrix_power(A, 3)
tensor([[ 1.0756,  0.4980,  0.0100],
        [-1.6617,  1.4994, -1.9980],
        [-0.4509,  0.2731,  0.8001]])
>>> torch.linalg.matrix_power(A.expand(2, -1, -1), -2)
tensor([[[ 0.2640,  0.4571, -0.5511],
        [-1.0163,  0.3491, -1.5292],
        [-0.4899,  0.0822,  0.2773]],
        [[ 0.2640,  0.4571, -0.5511],
        [-1.0163,  0.3491, -1.5292],
        [-0.4899,  0.0822,  0.2773]]])

文件

存取 PyTorch 的綜合開發人員文件

檢視文件

教學

取得初學者和高級開發人員的深入教學課程

檢視教學課程

資源

尋找開發資源並取得問題的解答

檢視資源