快捷方式

torch.linalg.matrix_power

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

计算方阵的 n 次方,其中 n 为整数。

支持 float、double、cfloat 和 cdouble 数据类型。还支持矩阵批处理,如果 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 (张量) – 形状为 (*, m, m) 的张量,其中 * 是零个或多个批处理维度。

  • n (int) – 指数。

关键字参数

out (张量, 可选) – 输出张量。如果为 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 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源