torch.eig¶
- 
torch.eig(input, eigenvectors=False, *, out=None)¶ Computes the eigenvalues and eigenvectors of a real square matrix.
Note
Since eigenvalues and eigenvectors might be complex, backward pass is supported only if eigenvalues and eigenvectors are all real valued.
When
inputis on CUDA,torch.eig()causes host-device synchronization.Warning
torch.eig()is deprecated in favor oftorch.linalg.eig()and will be removed in a future PyTorch release.torch.linalg.eig()returns complex tensors of dtype cfloat or cdouble rather than real tensors mimicking complex tensors.L, _ = torch.eig(A)should be replaced withL_complex = torch.linalg.eigvals(A)
L, V = torch.eig(A, eigenvectors=True)should be replaced withL_complex, V_complex = torch.linalg.eig(A)
- Parameters
 - Keyword Arguments
 out (tuple, optional) – the output tensors
- Returns
 A namedtuple (eigenvalues, eigenvectors) containing
eigenvalues (Tensor): Shape . Each row is an eigenvalue of
input, where the first element is the real part and the second element is the imaginary part. The eigenvalues are not necessarily ordered.eigenvectors (Tensor): If
eigenvectors=False, it’s an empty tensor. Otherwise, this tensor of shape can be used to compute normalized (unit length) eigenvectors of corresponding eigenvalues as follows. If the corresponding eigenvalues[j] is a real number, column eigenvectors[:, j] is the eigenvector corresponding to eigenvalues[j]. If the corresponding eigenvalues[j] and eigenvalues[j + 1] form a complex conjugate pair, then the true eigenvectors can be computed as , .
- Return type
 
Example:
Trivial example with a diagonal matrix. By default, only eigenvalues are computed: >>> a = torch.diag(torch.tensor([1, 2, 3], dtype=torch.double)) >>> e, v = torch.eig(a) >>> e tensor([[1., 0.], [2., 0.], [3., 0.]], dtype=torch.float64) >>> v tensor([], dtype=torch.float64) Compute also the eigenvectors: >>> e, v = torch.eig(a, eigenvectors=True) >>> e tensor([[1., 0.], [2., 0.], [3., 0.]], dtype=torch.float64) >>> v tensor([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]], dtype=torch.float64)