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(), поскольку этот способ быстрее и численно устойчивее, чем явное вычисление .См. также
torch.linalg.solve()вычисляетA.inverse() @Bс помощью численно устойчивого алгоритма.- Параметры:
- Именованные аргументы:
-
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]]])
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.linalg.matrix_power.html