Spec-Zone.ru › PyTorch 2.14

torch.linalg.cholesky

torch.linalg.cholesky(A, *, upper=False, out=None) → Tensor [source]

Вычисляет разложение Холецкого комплексной эрмитовой или вещественной симметричной положительно определённой матрицы.

Пусть K\mathbb{K} — это R\mathbb{R} или C\mathbb{C}. Тогда разложение Холецкого комплексной эрмитовой или вещественной симметричной положительно определённой матрицы A∈Kn×nA \in \mathbb{K}^{n \times n} определяется следующим образом:

A=LLHL∈Kn×nA = LL^{\text{H}}\mathrlap{\qquad L \in \mathbb{K}^{n \times n}}

где LL — нижняя треугольная матрица с положительной вещественной диагональю (даже в комплексном случае), а LHL^{\text{H}} — сопряжённо-транспонированная матрица, если LL комплексная, и транспонированная матрица, если LL вещественная.

Поддерживаются типы данных float, double, cfloat и cdouble. Также поддерживаются пакеты матриц; если A — это пакет матриц, выходной тензор будет иметь такие же размеры пакета.

Примечание

Если входные данные находятся на устройстве CUDA, эта функция синхронизирует это устройство с ЦП. Версию этой функции, которая не выполняет синхронизацию, см. в torch.linalg.cholesky_ex().

См. также

torch.linalg.cholesky_ex() — версия этой операции, которая по умолчанию пропускает (медленную) проверку ошибок и вместо этого возвращает отладочную информацию. Это более быстрый способ проверить, является ли матрица положительно определённой.

torch.linalg.eigh() — другой способ разложения эрмитовой матрицы. Разложение по собственным значениям даёт больше информации о матрице, но вычисляется медленнее, чем разложение Холецкого.

Параметры:

A (Tensor) – тензор формы (*, n, n), где * — ноль или более размерностей пакета, содержащих симметричные или эрмитовы положительно определённые матрицы.

Именованные аргументы:
  • upper (bool, необязательный) – возвращать ли верхнюю треугольную матрицу. Тензор, возвращаемый при upper=True, является сопряжённо-транспонированной матрицей тензора, возвращаемого при upper=False.
  • out (Tensor, необязательный) – выходной тензор. Игнорируется, если None. По умолчанию: None.
Вызывает исключения:

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API