标量
简单操作
c
=
a
+
b
c
=
a
?
b
c
=
s
i
n
a
c = a + b \\ c = a \cdot b \\ c = sina
c=a+bc=a?bc=sina 长度
∣
a
∣
=
{
a
i
f
a
>
0
?
a
o
t
h
e
r
w
i
s
e
∣
a
+
b
∣
≤
∣
a
∣
+
∣
b
∣
∣
a
?
b
∣
=
∣
a
∣
?
∣
b
∣
|a| = \left \{ \begin{aligned} a \quad if a>0 \\ -a \quad otherwise\end{aligned} \right. \\ |a+b| \leq |a| + |b| \\ |a \cdot b| = |a|\cdot|b|
∣a∣={aifa>0?aotherwise?∣a+b∣≤∣a∣+∣b∣∣a?b∣=∣a∣?∣b∣
向量
简单操作
c
=
a
+
b
w
h
e
r
e
c
i
=
a
i
+
b
i
c
=
α
?
b
w
h
e
r
e
c
i
=
α
b
i
c
=
s
i
n
a
w
h
e
r
e
c
i
=
sin
?
a
i
c = a + b \quad where \quad c_i = a_i + b_i \\ c = \alpha \cdot b \quad where \quad c_i = \alpha b_i\\ c = sina \quad where \quad c_i = \sin a_i
c=a+bwhereci?=ai?+bi?c=α?bwhereci?=αbi?c=sinawhereci?=sinai? 长度
∣
∣
a
∣
∣
=
[
∑
i
=
1
m
a
i
2
]
1
2
∣
∣
a
∣
∣
≥
0
f
o
r
a
l
l
a
∣
∣
a
+
b
∣
∣
≤
∣
∣
a
∣
∣
+
∣
∣
b
∣
∣
∣
∣
a
?
b
∣
∣
=
∣
a
∣
?
∣
∣
b
∣
∣
||a|| = [\sum_{i=1}^m a_i^2]^{1 \over 2} \\ ||a|| \geq 0 \quad for \quad all \quad a \\ ||a+b|| \leq ||a|| + ||b|| \\ ||a \cdot b|| = |a|\cdot||b||
∣∣a∣∣=[i=1∑m?ai2?]21?∣∣a∣∣≥0foralla∣∣a+b∣∣≤∣∣a∣∣+∣∣b∣∣∣∣a?b∣∣=∣a∣?∣∣b∣∣ 点乘
a
T
b
=
∑
i
a
i
b
i
a^Tb = \sum_i a_ib_i
aTb=∑i?ai?bi? 正交
a
T
b
=
∑
i
a
i
b
i
=
0
a^Tb=\sum_ia_ib_i=0
aTb=∑i?ai?bi?=0
矩阵
简单操作
C
=
A
+
B
w
h
e
r
e
C
i
j
=
A
i
j
+
B
i
j
C
=
α
?
B
w
h
e
r
e
C
i
j
=
α
B
i
j
C
=
s
i
n
A
w
h
e
r
e
C
i
j
=
sin
?
A
i
j
C = A + B \quad where \quad C_{ij} = A_{ij}+B_{ij} \\ C = \alpha \cdot B \quad where \quad C_{ij}= \alpha B_{ij} \\ C = sinA \quad where \quad C_{ij} = \sin A_{ij}
C=A+BwhereCij?=Aij?+Bij?C=α?BwhereCij?=αBij?C=sinAwhereCij?=sinAij? 乘法(矩阵乘以向量)
c
=
A
b
w
h
e
r
e
c
i
=
∑
j
A
i
j
b
j
c = Ab \quad where \quad c_i = \sum_jA_{ij}b_j
c=Abwhereci?=∑j?Aij?bj? 乘法(矩阵乘以矩阵)
C
=
A
B
w
h
e
r
e
C
i
k
=
∑
j
A
i
j
B
j
k
C = AB \quad where \quad C_{ik} = \sum_jA_{ij}B_{jk}
C=ABwhereCik?=∑j?Aij?Bjk? 范数
c
=
A
?
b
h
e
n
c
e
∣
∣
c
∣
∣
≤
∣
∣
A
∣
∣
?
∣
∣
b
∣
∣
c = A\cdot b \quad hence \quad ||c|| \leq ||A|| \cdot ||b||
c=A?bhence∣∣c∣∣≤∣∣A∣∣?∣∣b∣∣ 取决于如何衡量b和c的长度 常见范数: 1.矩阵范数:最小的满足的上面公式的值 2.Frobenius范数
∣
∣
A
∣
∣
F
r
o
b
=
[
∑
i
j
A
i
j
2
]
1
2
||A||_{Frob} = [\sum_{ij}A_{ij}^2]^{1 \over 2}
∣∣A∣∣Frob?=[ij∑?Aij2?]21?
特殊矩阵
对称和反对称
A
i
j
=
A
j
i
a
n
d
A
i
j
=
?
A
j
i
A_{ij} = A_{ji} \quad and \quad A_{ij} = -A_{ji}
Aij?=Aji?andAij?=?Aji? 正定
∣
∣
x
∣
∣
2
=
x
T
x
≥
0
g
e
n
e
r
a
l
i
z
e
s
t
o
x
T
A
x
≥
0
||x||^2 = x^Tx \geq 0 \quad generalizes \quad to \quad x^TAx \geq0
∣∣x∣∣2=xTx≥0generalizestoxTAx≥0 正交矩阵 1.所有行都相互正交 2.所有行都有单位长度
U
w
i
t
h
∑
j
U
i
j
U
k
j
=
δ
i
k
U \quad with \sum_jU_{ij}U_{kj} = \delta_{ik}
Uwith∑j?Uij?Ukj?=δik? 3.可以写成
U
U
T
=
1
UU^T = 1
UUT=1 置换矩阵
P
w
h
e
r
e
P
i
j
=
1
i
f
a
n
d
o
n
l
y
i
f
j
=
π
(
i
)
P \quad where \quad P_{ij} =1 \quad if \quad and \quad only \quad if \quad j= \pi(i)
PwherePij?=1ifandonlyifj=π(i) 置换矩阵是正交矩阵
- 特征向量和特征值
- 不被矩阵改变方向的向量
- 对称矩阵总是可以找到特征向量
代码
标量由只有一个元素的张量表示
import torch
x = torch.tensor([3.0])
y = torch.tensor([2.0])
x + y,x * y, x / y, x**y
可以将向量视为标量组成的列表
x = torch.arrange(4)
x
通过张量的索引来访问任一元素
x[3]
访问张量的长度
len(x)
只有一个轴的张量,形状只有一个元素
x.shape
通过制定两个分量m和n来创建一个形状
m
×
n
m \times n
m×n的矩阵
A = torch.arange(20).reshape(5,4)
矩阵的转置
A.T
对称矩阵A等于其转置:
A
=
A
T
A=A^T
A=AT
B = torch.tensor([[1,2,3],[2,0,4],[3,4,5]])
B == B.T
就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构
x = torch.arange(24).reshape(2,3,4)
x
给定任何相同形状的任何两个张量,任何按元素二元运算的结果都将是相同形状的张量
A = torch.arange(20,dtype=torch.float32).reshape(5,4)
B = A.clone()
A, A + B
两个矩阵的按元素乘法成为哈达玛积
A*B
表示任何形状张量的元素和
A.sum()
指定求和汇总张量的轴
A_sum_axis0 = A.sum(axis=0)
A_sum_axis1 = A.sum(axis=1)
A_sum_axis2 = A.sum(axis =[0,1])
求均值
A.mean(), A.sum()/A.numel()
A.mean(axis=0),A.sum(axis=0)/A.shape[0]
计算总和或均值时保持轴数不变
sum_A =A.sum(axis=1,keedims=True)
通过广播将A处以sum_A
A/sum_A
某个轴计算A元素的累积总和
A.cumsum(axis=0)
点积是相同位置的按元素乘积的和
x = torch.tensor([0,1,2,3])
y = torch.ones(4,dtype= torch.float32)
torch.dot(x,y)
我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积
torch.sum(x*y)
矩阵向量积
A
x
Ax
Ax是一个长度为m的列向量,其
i
t
h
i^{th}
ith元素是点积
a
i
T
x
a_i^Tx
aiT?x
torch.mv(A,x)
我们可以将矩阵-矩阵乘法AB看做是简单的执行m次矩阵-向量积,并将结果拼接在一起,形成一个
n
×
m
矩
阵
n \times m矩阵
n×m矩阵
torch.mm(A,B)
L2范数是向量元素平方和的平方根
torch.norm(u)
L1范数表示向量元素的绝对值之和
torch.abs(u).sum()
矩阵的佛罗贝尼乌斯范数(Frobenius norm)是矩阵元素的平方和的平方根
torch.norm(torch.ones((4,9)))
|