Spec-Zone.ru › PyTorch 1

torch.symeig

torch.symeig(input, eigenvectors=False, upper=True, *, out=None)

Эта функция возвращает собственные значения и собственные векторы вещественной симметричной или комплексной эрмитовой матрицы input или группы таких матриц, представленных в виде именованной кортежа (собственные значения, собственные векторы).

Эта функция вычисляет все собственные значения (и векторы) input такие, что input=Vdiag(e)VT\text{input} = V \text{diag}(e) V^T.

Логический аргумент eigenvectors определяет вычисление собственных векторов и собственных значений или только собственных значений.

Если он False, вычисляются только собственные значения. Если он True, вычисляются как собственные значения, так и собственные векторы.

Поскольку входная матрица input должна быть симметричной или эрмитовой, по умолчанию используется только верхняя треугольная часть.

Если upper равно False, используется нижняя треугольная часть.

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

torch.symeig() устарела и будет удалена в будущей версии PyTorch в пользу torch.linalg.eigh(). Поведение по умолчанию изменилось с использования верхней треугольной части матрицы по умолчанию на использование нижней треугольной части.

L, _ = torch.symeig(A, upper=upper) следует заменить на

UPLO = "U" if upper else "L"
L = torch.linalg.eigvalsh(A, UPLO=UPLO)

L, V = torch.symeig(A, eigenvectors=True, upper=upper) следует заменить на

UPLO = "U" if upper else "L"
L, V = torch.linalg.eigh(A, UPLO=UPLO)

Примечание

Собственные значения возвращаются в порядке возрастания. Если input является набором матриц, то собственные значения каждой матрицы в наборе возвращаются в порядке возрастания.

Примечание

Независимо от исходных шагов, возвращаемая матрица V будет транспонирована, то есть с шагами V.contiguous().mT.stride().

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

Необходимо проявлять особую осторожность при обратном проходе через результаты. Такая операция стабильна только в случае, если все собственные значения различны, и становится менее стабильной, чем меньше min⁡i≠j∣λi−λj∣\min_{i \neq j} |\lambda_i - \lambda_j|.

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

out (кортеж, необязательно) – выходной кортеж из (Тензор, Тензор)

Возвращаемое значение:

Именованный кортеж (собственные значения, собственные векторы), содержащий

  • собственные значения (Тензор): Формат (∗,m)(*, m). Собственные значения в порядке возрастания.
  • собственные векторы (Тензор): Формат (∗,m,m)(*, m, m). Если eigenvectors=False, это пустой тензор. В противном случае этот тензор содержит ортонормальные собственные векторы input.
Тип возвращаемого значения:

(Тензор, Тензор)

Примеры:

>>> a = torch.randn(5, 5)
>>> a = a + a.t()  # To make a symmetric
>>> a
tensor([[-5.7827,  4.4559, -0.2344, -1.7123, -1.8330],
        [ 4.4559,  1.4250, -2.8636, -3.2100, -0.1798],
        [-0.2344, -2.8636,  1.7112, -5.5785,  7.1988],
        [-1.7123, -3.2100, -5.5785, -2.6227,  3.1036],
        [-1.8330, -0.1798,  7.1988,  3.1036, -5.1453]])
>>> e, v = torch.symeig(a, eigenvectors=True)
>>> e
tensor([-13.7012,  -7.7497,  -2.3163,   5.2477,   8.1050])
>>> v
tensor([[ 0.1643,  0.9034, -0.0291,  0.3508,  0.1817],
        [-0.2417, -0.3071, -0.5081,  0.6534,  0.4026],
        [-0.5176,  0.1223, -0.0220,  0.3295, -0.7798],
        [-0.4850,  0.2695, -0.5773, -0.5840,  0.1337],
        [ 0.6415, -0.0447, -0.6381, -0.0193, -0.4230]])
>>> a_big = torch.randn(5, 2, 2)
>>> a_big = a_big + a_big.mT  # To make a_big symmetric
>>> e, v = a_big.symeig(eigenvectors=True)
>>> torch.allclose(torch.matmul(v, torch.matmul(e.diag_embed(), v.mT)), a_big)
True

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

Spec-Zone.ru

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