动手学深度学习之线性代数
数学知识
补充一些快要忘记的数学知识
范数
- 取决于如何衡量 b 和 c 的长度
常见的范数:
矩阵范数:最小的满足上面公式的值
Frobenius范数:
正定
一个矩阵乘任何的一个列向量或是行向量都大于等于零。
正交矩阵
所有行都正交
所有行都有单位长度
- 可以写成
置换矩阵
- 置换矩阵都是正交矩阵
特征向量
- 不被矩阵改变的向量
- 对称矩阵总是可以找到特征向量
编程计算
标量
由只有一个元素的张量表示。
python
x = torch.tensor([3.0])
向量
由向量值组成的列表。
python
x = torch.arange(4)
矩阵
python
A = torch.arange(20).reshape(5, 4)
转置:A.T
求和
部分内容见上一讲 04数据处理。
对矩阵而言,0 是行,对 axis=0
求和就是对每一列求和,因为要把矩阵的第 0 维降维,也就是将原本的行数降维,只保留原本的列数。等价于去掉形状的对应维度。
哈达玛积
python
A * B
向量的点积
点积是相同位置的按元素乘积的和。
- 向量的点积结果是标量。
python
torch.dot(x, y)
也可以先执行按元素乘法,然后进行求和来表示两个向量的点积。
python
torch.sum(x * y)
矩阵-向量积
- 矩阵-向量积是矩阵的每一行与向量的点积。
python
y = torch.mv(A, x)
矩阵-矩阵乘法
- 矩阵-矩阵乘法 AB 看作是简单地执行 m 次矩阵-向量积,并将结果拼接在一起,形成一个
矩阵。
python
A = torch.arange(20).reshape(5, 4)
B = torch.ones(4, 3)
torch.mm(A, B)
范数求解
范数:
python
u = torch.tensor([3.0, -4.0])
torch.norm(u)
范数:
python
torch.abs(u).sum()
- 矩阵的 Frobenius 范数:
python
torch.norm(torch.ones((4, 9)))