动手学深度学习v2 - 数学相关
本文最后更新于 2022年1月26日 晚上
线代基础内容已经详细学习过,因此不再赘述
线性代数基础操作
转置
1 | |
对称矩阵
1 | |
构建多维的数据结构
1 | |
矩阵的哈达玛积 $\odot$ (对应位置元素相乘)
1 | |
矩阵的一些运算
1 | |
张量沿轴求和
1 | |
求均值
1 | |
求均值并且保持维度不变
1 | |
求累计和
1 | |
点积
1 | |
求矩阵向量积$Ax$
1 | |
矩阵乘法
1 | |
$L_2$范数,表示向量或者矩阵的长度
1 | |
$L_1$ 范数,表示为向量元素的绝对值之和:
1 | |
矩阵的弗罗贝尼乌斯范数(Frobenius norm): 矩阵元素平方和的平方根
1 | |
微分






梯度与偏导理解:
向量链式法则:


自动求导
计算图,与高数求偏导的链式法则类似



反向传递复杂度:
时间复杂度/计算复杂度:$O(n)$,n为操作子个数,通常正向和反向的代价类似
空间复杂度/内存复杂度:$O(n)$,需要存放正向的所有中间结果
正向的内存复杂度:$O(1)$,计算复杂度:$O(n)$,计算一个变量的梯度,复杂度高
假设对函数 $y = 2\mathbf{x}^{\top}\mathbf{x}$关于列向量 $\mathbf{x}$求导:
其中x = [0,1,2,3]
手动求导:$y’ = 4x$,可求得[0, 4, 8, 12]
自动求导:
1 | |
非标量变量的反向传播
计算$y=x^2$
1 | |
练习
2.5.6
计算$f(x) = sin(x)$的导数
1
2
3y = torch.sin(x)
y.sum().backward()
x.grad
动手学深度学习v2 - 数学相关
https://nanami.run/2021/04/04/d2l-pytorch-linear/