In this article, we are going to discuss how to compute the condition number of a matrix in PyTorch. we can get the condition number of a matrix by using torch.linalg.cond() method.
torch.linalg.cond() method
This method is used to compute the condition number of a matrix with respect to a matrix norm. This method accepts a matrix and batch of matrices as input. It will return a tensor with a computed condition number. It supports input of double, float, cfloat, and cdouble data types. before moving further let’s see the syntax of this method.
Syntax: torch.linalg.cond(M, P=None)
Parameters:
- M (Tensor): It’s a matrix or a batch of matrices.
- P (int, inf, -inf, ‘fro’, ‘nuc’, optional): It’s defines the matrix norm that is computed. The default value of P 2-norm.
Returns: It will return a tensor with a computed condition number.
Example 1
In this example, we defined a tensor using torch.tensor, and we will compute the condition number of a matrix with the help of torch.linalg.cond method.
Python3
# import the required library import torch # define a tensor (matrix) M = torch.tensor([[ - 0.1345 , - 0.7437 , 1.2377 ], [ 0.9337 , 1.6473 , 0.4346 ], [ - 1.6345 , 0.9344 , - 0.2456 ]]) # display input tensor print ( "\n Input Matrix M: \n" , M) # compute the condition number Output = torch.linalg.cond(M) # Display result print ( "\n Condition Number: " , Output) |
Output:
Example 2
In this example, we will compute the condition number of a matrix for different values of P with the help of torch.linalg.cond method.
Python3
# import the required library import torch # define a tensor (matrix) M = torch.tensor([[ - 0.1345 , - 0.7437 , 1.2377 ], [ 0.9337 , 1.6473 , 0.4346 ], [ - 1.6345 , 0.9344 , - 0.2456 ]]) # display input tensor print ( "\n Input Matrix M: \n" , M) print ( "When P is fro = " , torch.linalg.cond(M, p = 'fro' )) print ( "When P is nuc =" , torch.linalg.cond(M, p = 'nuc' )) print ( "When P is inf =" , torch.linalg.cond(M, p = float ( 'inf' ))) print ( "When P is -inf =" , torch.linalg.cond(M, p = float ( '-inf' ))) print ( "When P is 1 =" , torch.linalg.cond(M, p = 1 )) print ( "When P is -1 =" , torch.linalg.cond(M, p = - 1 )) print ( "When P is 2 =" , torch.linalg.cond(M, p = 2 )) print ( "When P is -2 =" , torch.linalg.cond(M, p = - 2 )) |
Output:
Example 3
In this example, we will compute the condition number of a batch of matrices with the help of torch.linalg.cond method.
Python3
# import the required library import torch # define a tensor (matrix) M = 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 ]]]) # display input tensor print ( " Input Matrix M: \n" , M) # compute the condition number Output = torch.linalg.cond(M) # Display result print ( "\n Condition Number: " , Output) |
Output: