torch.linalg.eigvalsh
- torch.linalg.eigvalsh(A, UPLO='L', *, out=None) → Tensor
-
计算复 Hermite 矩阵或实对称矩阵的特征值。
令$\mathbb{K}$为实数集$\mathbb{R}$或复数集$\mathbb{C}$,复赫mitte矩阵或实对称矩阵$A \in \math biochemical.keitex">\mathbb{K}^{n \times n}$的特征值定义为由下式给出的次数为n的多项式p的根(按重数计算):
$p(\lambda) = \operatorname{det}(A - \lambda \mathrm{I}_n)\mathrlap{\qquad \lambda \in \mathbb{R}}$其中$\mathrm{I}_n$ 表示 n 维单位矩阵。实对称矩阵或复赫米特矩阵的特征值始终为实数。
支持浮点型、双精度型、复数浮点型和复数双精度型的数据类型作为输入。还支持矩阵的批量处理,如果
A
是一组矩阵,那么输出将具有相同的批处理维度。特征值以升序排列返回。
A
被假设为厄米矩阵(或对应的对称矩阵),但不会进行内部验证,而是:-
如果
UPLO
= ‘L’(默认情况),则在计算中只使用矩阵的下三角部分。 -
如果
UPLO
= 'U',则只使用矩阵的上三角部分。
注意
当输入位于CUDA设备上时,此函数会将其与CPU进行同步。
参见
torch.linalg.eigh()
用于计算完整的特征值分解。- 参数
-
-
A (Tensor) – 形状为(*, n, n)的张量,其中*表示零个或多个批次维度,包含对称或厄米矩阵。
-
UPLO ('L', 'U', 可选) – 控制在计算中使用矩阵
A
的上三角部分还是下三角部分。默认值:‘L’。
-
- 关键字参数
-
out (Tensor, optional) – 输出张量。默认为None,若未指定则忽略。
- 返回值
-
这是一个实值张量,包含了特征值,即使在
A
为复数的情况下也不例外。特征值会按照从小到大的顺序进行排列。
示例:
>>> A = torch.randn(2, 2, dtype=torch.complex128) >>> A = A + A.T.conj() # creates a Hermitian matrix >>> A tensor([[2.9228+0.0000j, 0.2029-0.0862j], [0.2029+0.0862j, 0.3464+0.0000j]], dtype=torch.complex128) >>> torch.linalg.eigvalsh(A) tensor([0.3277, 2.9415], dtype=torch.float64) >>> A = torch.randn(3, 2, 2, dtype=torch.float64) >>> A = A + A.mT # creates a batch of symmetric matrices >>> torch.linalg.eigvalsh(A) tensor([[ 2.5797, 3.4629], [-4.1605, 1.3780], [-3.1113, 2.7381]], dtype=torch.float64)
-