PyTorch – torch.linalg.cond()
为了计算矩阵相对于矩阵范数的条件数,我们可以使用 **torch.linalg.cond()** 方法。它返回一个包含计算出的条件数的新张量。它接受一个矩阵、一批矩阵以及一批矩阵的批次作为输入。矩阵是一个二维 torch 张量。它支持 **float、double、cfloat** 和 **cdouble** 数据类型。
语法
torch.linalg.cond(M, p=None)
参数
M – 一个矩阵或一批矩阵。
p – 用于计算条件数的矩阵范数类型。默认矩阵范数是 2-范数。
它返回一个实值条件数张量。
步骤
我们可以使用以下步骤来计算矩阵的条件数:
导入所需的库。在以下所有示例中,所需的 Python 库是 **torch**。确保你已经安装了它。
import torch
定义一个矩阵。这里,我们定义一个大小为 3×4 的随机数矩阵(二维张量)。
M = torch.randn(3,4)
使用 **torch.linalg.cond(A, p = None)** 计算矩阵的条件数。A 是一个矩阵或一批矩阵。p 是矩阵范数类型。可以选择将此值赋值给一个新变量。
Mcond = torch.linalg.cond(M)
打印包含条件数的计算张量。
print("Norm:", Mcond)
示例 1
下面的程序演示了如何计算相对于默认矩阵范数的矩阵条件数。默认矩阵范数是 2-范数。
# Python program to compute the condition number of a matrix # import required library import torch # define a matrix of size 3x4 M = torch.randn(3,4) print("Matrix M:
", M) # compute the condition number of above defined matrix Mcond = torch.linalg.cond(M) # print condition number of the matrix print("Condition Number:
", Mcond)
输出
它将产生以下输出:
Matrix M: tensor([[-0.3241, 1.6410, 1.5067, -1.4944], [-0.5977, -0.4599, 0.6367, 0.1683], [ 1.4590, 0.9267, -0.2186, -0.5963]]) Condition Number: tensor(7.4035)
示例 2
在这个程序中,我们计算相对于不同矩阵范数的条件数。
import torch # define a matrix of size 3x3 M = torch.randn(3,3) print("Matrix:
", M) print("
Condition Number with different Norms:") print(torch.linalg.cond(M)) print(torch.linalg.cond(M, p = 'fro')) print(torch.linalg.cond(M, p = 'nuc')) print(torch.linalg.cond(M, p = 1)) print(torch.linalg.cond(M, p = -1)) print(torch.linalg.cond(M, p = 2)) print(torch.linalg.cond(M, p = -2)) print(torch.linalg.cond(M, p = float('inf'))) print(torch.linalg.cond(M, p = float('-inf')))
输出
它将产生以下输出:
Matrix: tensor([[-0.0328, 0.1970, -0.1466], [ 0.1721, 0.0765, 1.1714], [ 1.1040, 1.7493, 0.8331]]) Condition Number with different Norms: tensor(21.0871) tensor(23.1940) tensor(36.1807) tensor(27.7410) tensor(1.4686) tensor(21.0871) tensor(0.0474) tensor(37.5561) tensor(0.7646)
广告