深度学习基础:线性代数(4)_范数

Lp范数

$$
\mid\mid x\mid\mid_p = (\sum_{i}|x_i|^p)^{\frac {1} {p}}
$$

其中$p \in {\Bbb {R}}, p \geq 1$

$L_1$范数:$ \mid \mid x\mid\mid_1 = \sum_{i} x_i $
$L_2$范数:$ \mid \mid x\mid\mid_2 = \sqrt{\sum_{i} x_i^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实现

1
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 l_2 \geq l_\infty$

Numpy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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))

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :