torch.linalg.matrix_power¶
- torch.linalg.matrix_power(A, n, *, out=None) Tensor ¶
计算整数 n 的方阵 n 次幂。
支持输入 float、double、cfloat 和 cdouble 数据类型。也支持矩阵批处理,如果
A
是矩阵批,则输出具有相同的批维度。如果
n
等于 0,则返回与A
相同形状的恒等矩阵(或批量)。如果n
为负数,则返回每个矩阵(如果可逆)的绝对值 n 次幂的逆矩阵。注意
如果可能,请考虑使用
torch.linalg.solve()
来对矩阵左乘以负幂,因为如果n
> 0:torch.linalg.solve(matrix_power(A, n), B) == matrix_power(A, -n) @ B
在可能的情况下,始终推荐使用
solve()
,因为它比显式计算 更快且更数值稳定。参见
torch.linalg.solve()
使用数值稳定的算法计算A
.inverse() @B
。- 参数:
A(张量)- 形状为 (*, m, m) 的张量,其中 * 是零个或多个批处理维度。
n(整数)- 指数。
- 关键字参数:
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]]])