Spec-Zone.ru › PyTorch 2

torch.cholesky

torch.cholesky(input, upper=False, *, out=None) → Tensor

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

Если upper равно True, возвращаемая матрица U является верхнетреугольной, и разложение имеет вид:

A=UTUA = U^TU

Если upper равно False, возвращаемая матрица L является нижнетреугольной, и разложение имеет вид:

A=LLTA = LL^T

Если upper равно True, и AA является набором симметричных положительно определённых матриц, то возвращаемый тензор будет содержать верхнетреугольные факторы Холецкого для каждой отдельной матрицы. Аналогично, когда upper равно False, возвращаемый тензор будет содержать нижнетреугольные факторы Холецкого для каждой отдельной матрицы.

Предупреждение

torch.cholesky() устарела и будет удалена в будущей версии PyTorch. Вместо неё следует использовать torch.linalg.cholesky().

L = torch.cholesky(A) следует заменить на

L = torch.linalg.cholesky(A)

U = torch.cholesky(A, upper=True) следует заменить на

U = torch.linalg.cholesky(A).mH

Это преобразование даст эквивалентные результаты для всех допустимых (симметричных положительно определённых) входных данных.

Параметры
  • input (Tensor) – входной тензор AA размера (∗,n,n)(*, n, n), где * — нулевые или более размерностей пакетных данных, представляющих симметричные положительно определённые матрицы.
  • upper (bool, необязательно) – флаг, указывающий, нужно ли вернуть верхнюю или нижнюю треугольную матрицу. По умолчанию: False
Ключевые аргументы

out (Tensor, необязательно) – выходная матрица

Пример:

>>> a = torch.randn(3, 3)
>>> a = a @ a.mT + 1e-3 # make symmetric positive-definite
>>> l = torch.cholesky(a)
>>> a
tensor([[ 2.4112, -0.7486,  1.4551],
        [-0.7486,  1.3544,  0.1294],
        [ 1.4551,  0.1294,  1.6724]])
>>> l
tensor([[ 1.5528,  0.0000,  0.0000],
        [-0.4821,  1.0592,  0.0000],
        [ 0.9371,  0.5487,  0.7023]])
>>> l @ l.mT
tensor([[ 2.4112, -0.7486,  1.4551],
        [-0.7486,  1.3544,  0.1294],
        [ 1.4551,  0.1294,  1.6724]])
>>> a = torch.randn(3, 2, 2) # Example for batched input
>>> a = a @ a.mT + 1e-03 # make symmetric positive-definite
>>> l = torch.cholesky(a)
>>> z = l @ l.mT
>>> torch.dist(z, a)
tensor(2.3842e-07)

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.cholesky.html

Spec-Zone.ru

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