深度学习基础:线性代数(4)_范数
Lp范数
$$
\mid\mid x\mid\midp = (\sum{i}|x_i|^p)^{\frac {1} {p}}
$$
其中$p \in {\Bbb {R}}, p \geq 1$
$L_1$范数:$ \mid \mid x\mid\mid1 = \sum{i} x_i $
$L_2$范数:$ \mid \mid x\mid\mid2 = \sqrt{\sum{i} xi^2} $
$L\infty$范数:$ \mid \mid x\mid\mid_\infty = max \mid x_i\mid $
Frobenius范数
Frobenius范数是用来衡量矩阵的大小,其定义:
$$
||x||F = \sqrt{\sum{i,j}A_{i,j}^2}
$$
就是矩阵的每个元素取平方再求和,最终开平方。类似于$L_2$范数。
Python实现
norm(x, ord=None, axis=None, keepdims=False)
x表示要度量的向量,ord表示范数的种类
参数 | 说明 | 计算方法 |
---|---|---|
默认 | 二范数:$l_2$ | $\sqrt{x_1^2 + x_2^2 + \cdots + x_n^2}$ |
ord=2 | 二范数:$l_2$ | 同上 |
ord=1 | 一范数:$l_1$ | $\mid x_1\mid + \mid x_2\mid + \cdots + \mid x_n\mid$ |
ord=np.inf | 无穷范数:$l_\infty$ | $max(\mid x_i\mid)$ |
范数理论的一个小推论告诉我们:$l_1 \geq l2 \geq l\infty$
Numpy
import numpy as np
# 向量
x = np.arange(9) - 4
# 矩阵
A = x.reshape((3, 3))
print(A)
# L1范数
print(np.linalg.norm(x, 1))
# L2范数
print(np.linalg.norm(x, 2))
# L正无穷范数
print(np.linalg.norm(x, np.inf))
# L负无穷范数
print(np.linalg.norm(x, -np.inf))
# Frobenius范数
print(np.linalg.norm(A))
Numpy
import numpy as np
from scipy import linalg
# 向量
x = np.arange(9) - 4
# 矩阵
A = x.reshape((3, 3))
print(A)
# L1范数
print(linalg.norm(x,1))
# L2范数
print(linalg.norm(x,2))
# L正无穷范数
print(linalg.norm(x,np.inf))
# L负无穷范数
print(linalg.norm(x,-np.inf))
# Frobenius范数
print(linalg.norm(A))
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/04/01/fundamentals-of-deep-learning-linear-algebra-norm/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论