介绍
np.linalg.norm
函数用于计算向量或矩阵的范数。具体计算公式取决于ord
参数的取值。以下是np.linalg.norm
函数中常见的ord
取值及其对应的计算公式:
-
ord=None
或默认值:计算Frobenius范数(矩阵的二范数)。对于向量,Frobenius范数等同于Euclidean范数(L2范数)。
对于矩阵A,Frobenius范数定义为:
norm(A, ord='fro') = sqrt(sum(abs(A)**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))
。 -
ord=2
:计算L2范数。也称为欧几里德范数(Euclidean norm)或向量的长度。对于向量,L2范数定义为向量元素的平方和的平方根:
norm(x, ord=2) = sqrt(sum(x**2))
。对于矩阵A,L2范数定义为A的奇异值(Singular Values)的最大值。
-
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范数的方法:
- 使用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范数。
- 使用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范数。