How to compute the eigenvalues and eigenvectors of a square matrix in PyTorch?
In this article, we are going to discuss how to compute the eigenvalues and eigenvectors of a square matrix in PyTorch.
Compute the eigenvalues and eigenvectors of a square matrix in PyTorch
torch.linalg.eig() method computes the eigenvalue decomposition of a square matrix or a batch of matrices. The decomposition exists if the input matrix is diagonalizable. This method also supports the input of float, double, cfloat, and cdouble data types. It will return a named tuple (eigenvalues, eigenvectors). The eigenvalues and eigenvectors are always complex-valued and the eigenvectors are given by columns of eigenvectors. Below is the syntax of torch.linalg.eig() method.
Syntax: torch.linalg.eig(mat)
Parameter:
- mat (Tensor): square matrix or a batch of matrices.
Return: It will return a named tuple (eigenvalues, eigenvectors).
Example 1:
In this example, we see how to compute the eigenvalues and eigenvectors of a square matrix.
Python3
# import the required library import torch # define a 3x3 square matrix mat = torch.tensor([[ - 0.3371 , - 0.2975 , 1.8739 ], [ 1.4078 , 1.6856 , 0.3799 ], [ 1.9002 , - 0.4428 , 1.5552 ]]) # print the above created matrix print ( "\n Matrix: \n" , mat) # compute the eigenvalues and eigenvectors eigenvalues, eigenvectors = torch.linalg.eig(mat) # print output print ( "\n Eigenvalues: \n" , eigenvalues) print ( "\n Eigenvectors: \n" , eigenvectors) |
Output:

EigenValues and EigenVectors
Example 2:
In this example, we see how to compute the eigenvalues and eigenvectors of a batch of matrices.
Python3
# import the required library import torch # define a batch of matrices mat = torch.tensor([[[ - 0.1345 , - 0.7437 , 1.2377 ], [ 0.9337 , 1.6473 , 0.4346 ], [ - 1.6345 , 0.9344 , - 0.2456 ]], [[ 1.3343 , - 1.3456 , 0.7373 ], [ 1.4334 , 0.2473 , 1.1333 ], [ - 1.5341 , 1.5348 , - 1.4567 ]]]) # print the above batch of matrices print ( "\n Matrix: \n" , mat) # compute the eigenvalues and eigenvectors eigenvalues, eigenvectors = torch.linalg.eig(mat) # print output print ( "\n Eigenvalues: \n" , eigenvalues) print ( "\n Eigenvectors: \n" , eigenvectors) |
Output:

EigenValues and EigenVectors
Please Login to comment...