深度学习基础:线性代数(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全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
深度学习基础:线性代数(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_……
<<上一篇
下一篇>>
文章目录
关闭
目 录