torch.linalg.cholesky
-
torch.linalg.cholesky(A, *, upper=False, out=None) → Tensor[source] -
Вычисляет разложение Холецкого комплексной эрмитовой или вещественной симметричной положительно определённой матрицы.
Пусть — это или . Тогда разложение Холецкого комплексной эрмитовой или вещественной симметричной положительно определённой матрицы определяется следующим образом:
где — нижняя треугольная матрица с положительной вещественной диагональю (даже в комплексном случае), а — сопряжённо-транспонированная матрица, если комплексная, и транспонированная матрица, если вещественная.
Поддерживаются типы данных float, double, cfloat и cdouble. Также поддерживаются пакеты матриц; если
A— это пакет матриц, выходной тензор будет иметь такие же размеры пакета.Примечание
Если входные данные находятся на устройстве CUDA, эта функция синхронизирует это устройство с ЦП. Версию этой функции, которая не выполняет синхронизацию, см. в
torch.linalg.cholesky_ex().См. также
torch.linalg.cholesky_ex()— версия этой операции, которая по умолчанию пропускает (медленную) проверку ошибок и вместо этого возвращает отладочную информацию. Это более быстрый способ проверить, является ли матрица положительно определённой.torch.linalg.eigh()— другой способ разложения эрмитовой матрицы. Разложение по собственным значениям даёт больше информации о матрице, но вычисляется медленнее, чем разложение Холецкого.- Параметры:
-
A (Tensor) – тензор формы
(*, n, n), где*— ноль или более размерностей пакета, содержащих симметричные или эрмитовы положительно определённые матрицы. - Именованные аргументы:
- Вызывает исключения:
-
RuntimeError – если матрица
Aили любая матрица в пакетеAне является эрмитовой (соответственно, симметричной) положительно определённой. ЕслиA— это пакет матриц, сообщение об ошибке будет содержать индекс пакета первой матрицы, не удовлетворяющей этому условию.
Примеры:
>>> A = torch.randn(2, 2, dtype=torch.complex128) >>> A = A @ A.T.conj() + torch.eye(2) # creates a Hermitian positive-definite matrix >>> A tensor([[2.5266+0.0000j, 1.9586-2.0626j], [1.9586+2.0626j, 9.4160+0.0000j]], dtype=torch.complex128) >>> L = torch.linalg.cholesky(A) >>> L tensor([[1.5895+0.0000j, 0.0000+0.0000j], [1.2322+1.2976j, 2.4928+0.0000j]], dtype=torch.complex128) >>> torch.dist(L @ L.T.conj(), A) tensor(4.4692e-16, dtype=torch.float64) >>> A = torch.randn(3, 2, 2, dtype=torch.float64) >>> A = A @ A.mT + torch.eye(2) # batch of symmetric positive-definite matrices >>> L = torch.linalg.cholesky(A) >>> torch.dist(L @ L.mT, A) tensor(5.8747e-16, dtype=torch.float64)
© 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.cholesky.html