Spec-Zone.ru › PyTorch 1

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/1.13/generated/torch.cholesky.html

Spec-Zone.ru

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