数据操作与预处理
这部分我觉得挺轻松的,因为我有pandas的基础,所以可以理解成就是把dataframe的格式换成tensor。当然我们要先了解一下张量
- 张量这一概念的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。张量是矩阵向任意维度的推广。
这些就比较简单基础了,包括reshape,zeros,ones等等常规的操作,还有下面这些切片操作都和pandas库差不多大差不差。
为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中,我们通常使用
pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样,pandas可以与张量兼容。
像这样子,直接把pd中处理好的数据放到tensor()中就可以实现数据格式的转化。
线性代数
- 标量:
x = torch.tensor(3.0) - 向量:
x = torch.arange(4) - 矩阵:
x = torch.arange(20).reshape(5,4) - 张量:
x = torch.arange(24).reshape(2,3,4) - 降维:
x.sum(),x.mean() - 非降维求和:
sum_A = A.sum(axis=1, keepdims=True) - 点积:
torch.dot(x, y) - 向量积:
torch.mv(A, x) - 矩阵乘法:
torch.mm(A, B) - 范数:
torch.norm(u)
微积分
- 导数和积分
我们先定义函数然后求积分,通过不断将h变小。得到斜率后我们就可以找出这条切线了。
- 偏导:其实很好理解,就是对多个值求导。
- 梯度: 偏导的集合。
自动微分
说实话这部分我还没有彻底懂。
- 深度学习框架可以自动计算导数:我们首先将梯度附加到想要对其计算偏导数的变量上,然后记录目标值的计算,执行它的反向传播函数,并访问得到的梯度。
- 求导是几乎所有深度学习优化算法的关键步骤。 虽然求导的计算很简单,只需要一些基本的微积分。 但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。深度学习框架通过自动计算导数,即自动微分(auto differentiation)来加快求导。 实际中,根据设计好的模型,系统会构建一个计算图(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。 自动微分使系统能够随后反向传播梯度。 这里,反向传播(backpropagate)意味着跟踪整个计算图,填充关于每个参数的偏导数。
- 标量变量的梯度计算
- 非标量变量的梯度计算
- Python控制流的梯度计算
概率
这部分还行,基础的概率论定义,如果你不懂,那就去好好去学一下概率论吧。
查阅文档
简单点说就是你不知道这个函数怎么用了,help一下。