torch.symeig
-
torch.symeig(input, eigenvectors=False, upper=True, *, out=None) -
Эта функция возвращает собственные значения и собственные векторы вещественной симметричной или комплексной эрмитовой матрицы
inputили группы таких матриц, представленных в виде именованной кортежа (собственные значения, собственные векторы).Эта функция вычисляет все собственные значения (и векторы)
inputтакие, что .Логический аргумент
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().Предупреждение
Необходимо проявлять особую осторожность при обратном проходе через результаты. Такая операция стабильна только в случае, если все собственные значения различны, и становится менее стабильной, чем меньше .
- Параметры:
-
-
input (Тензор) – входной тензор размера , где
*— ноль или более размерностей пакетных данных, состоящих из симметричных или эрмитовых матриц. - eigenvectors (bool, необязательно) – управляет тем, нужно ли вычислять собственные векторы
- upper (bool, необязательно) – управляет тем, нужно ли учитывать верхнюю или нижнюю треугольную область
-
input (Тензор) – входной тензор размера , где
- Ключевые аргументы:
-
out (кортеж, необязательно) – выходной кортеж из (Тензор, Тензор)
- Возвращаемое значение:
-
Именованный кортеж (собственные значения, собственные векторы), содержащий
- собственные значения (Тензор): Формат . Собственные значения в порядке возрастания.
-
собственные векторы (Тензор): Формат . Если
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