PyTorch – torch.linalg.cond()


为了计算矩阵相对于矩阵范数的条件数,我们可以使用 **torch.linalg.cond()** 方法。它返回一个包含计算出的条件数的新张量。它接受一个矩阵、一批矩阵以及一批矩阵的批次作为输入。矩阵是一个二维 torch 张量。它支持 **float、double、cfloat** 和 **cdouble** 数据类型。

语法

torch.linalg.cond(M, p=None)

参数

  • – 一个矩阵或一批矩阵。

  • 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)

更新于:2022年1月7日

219 次浏览

启动你的 职业生涯

完成课程获得认证

开始学习
广告