计算向量或矩阵的范数

计算向量或矩阵的范数

介绍

np.linalg.norm函数用于计算向量或矩阵的范数。具体计算公式取决于ord参数的取值。以下是np.linalg.norm函数中常见的ord取值及其对应的计算公式:

  1. ord=None或默认值:计算Frobenius范数(矩阵的二范数)。

    对于向量,Frobenius范数等同于Euclidean范数(L2范数)。

    对于矩阵A,Frobenius范数定义为:norm(A, ord='fro') = sqrt(sum(abs(A)**2))

  2. ord=1:计算L1范数。也称为曼哈顿范数(Manhattan norm)或绝对值范数。

    对于向量,L1范数定义为向量元素的绝对值之和:norm(x, ord=1) = sum(abs(x))

    对于矩阵A,L1范数定义为所有列向量的L1范数的最大值:norm(A, ord=1) = max(sum(abs(A), axis=0))

  3. ord=2:计算L2范数。也称为欧几里德范数(Euclidean norm)或向量的长度。

    对于向量,L2范数定义为向量元素的平方和的平方根:norm(x, ord=2) = sqrt(sum(x**2))

    对于矩阵A,L2范数定义为A的奇异值(Singular Values)的最大值。

  4. ord=np.inf:计算无穷范数(Infinity norm)。

    对于向量,无穷范数定义为向量元素的绝对值的最大值:norm(x, ord=np.inf) = max(abs(x))

    对于矩阵A,无穷范数定义为所有行向量的L1范数的最大值:norm(A, ord=np.inf) = max(sum(abs(A), axis=1))

上述是np.linalg.norm函数常见的ord参数取值及其对应的计算公式。根据具体需求,可以选择适合的ord参数来计算所需的范数。

示例

要计算一个向量的L1范数(L1 norm),可以使用NumPy或PyTorch等库中的函数。下面是两种常见的计算L1范数的方法:

  1. 使用NumPy:
import numpy as np

x = np.array([1, -2, 3, -4, 5])
l1_norm = np.linalg.norm(x, ord=1)
print(l1_norm)

输出结果为:

15.0

在上述示例中,np.linalg.norm函数用于计算向量的范数,ord=1参数指定计算L1范数。

  1. 使用PyTorch:
import torch

x = torch.tensor([1, -2, 3, -4, 5])
l1_norm = torch.norm(x, p=1)
print(l1_norm)

输出结果为:

tensor(15)

在上述示例中,torch.norm函数用于计算张量的范数,p=1参数指定计算L1范数。

猜你喜欢

转载自blog.csdn.net/qq_36892712/article/details/132258246