《动手学深度学习》笔记整理2:预备知识

69 阅读3分钟

数据操作与预处理

这部分我觉得挺轻松的,因为我有pandas的基础,所以可以理解成就是把dataframe的格式换成tensor。当然我们要先了解一下张量

  • 张量这一概念的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。张量是矩阵向任意维度的推广。

image.png 这些就比较简单基础了,包括reshape,zeros,ones等等常规的操作,还有下面这些切片操作都和pandas库差不多大差不差。

image.png 为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中,我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样,pandas可以与张量兼容。

image.png 像这样子,直接把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)

微积分

  • 导数和积分

image.png 我们先定义函数然后求积分,通过不断将h变小。得到斜率后我们就可以找出这条切线了。

image.png

  • 偏导:其实很好理解,就是对多个值求导。

image.png

  • 梯度: 偏导的集合。

image.png

自动微分

说实话这部分我还没有彻底懂。

  • 深度学习框架可以自动计算导数:我们首先将梯度附加到想要对其计算偏导数的变量上,然后记录目标值的计算,执行它的反向传播函数,并访问得到的梯度。
  • 求导是几乎所有深度学习优化算法的关键步骤。 虽然求导的计算很简单,只需要一些基本的微积分。 但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。深度学习框架通过自动计算导数,即自动微分(auto differentiation)来加快求导。 实际中,根据设计好的模型,系统会构建一个计算图(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。 自动微分使系统能够随后反向传播梯度。 这里,反向传播(backpropagate)意味着跟踪整个计算图,填充关于每个参数的偏导数。
  • 标量变量的梯度计算

image.png

  • 非标量变量的梯度计算

image.png

  • Python控制流的梯度计算

image.png

概率

这部分还行,基础的概率论定义,如果你不懂,那就去好好去学一下概率论吧。

image.png

image.png

image.png

image.png

image.png

查阅文档

简单点说就是你不知道这个函数怎么用了,help一下。 image.png