PyTorch 基础
学习目标
- 理解什么是
Tensor - 掌握张量的创建、形状、数据类型和常用运算
- 理解 PyTorch 和 NumPy 的关系
- 能独立读懂最基本的张量操作代码
先建立一张地图
这一节不要把它看成“PyTorch 语法表”,更适合的理解顺序是:
也就是说,这一节真正要打稳的是:
- 你能不能把数据装进 PyTorch
- 你能不能看懂张量形状
- 你能不能安全地做最基础的运算
这节和第 5 站、NumPy 是怎么接上的
如果你是从第 5 站过来,可以先把这一节理解成:
- 第 5 站里
X、y、矩阵乘法这些东西,到这里都还在 - 只是现在它们要进入一个更适合深度学习训练的容器:
Tensor
如果你熟悉 NumPy,也可以先这样记:
Tensor很像ndarray- 但它还能上 GPU,还能参与自动求导
所以这一节不是在学“全新数学”,而是在学:
- 同样的数据对象,换一种更适合训练神经网络的表达方式
一、张量到底是什么?
最实用的理解方式是:
张量 = 能在 CPU / GPU 上计算的多维数组
如果你学过 NumPy,可以先把它想成“升级版 ndarray”:
- 能做数值运算
- 能放到 GPU 上
- 能参与自动求导
类比一下:
| 概念 | 类比 |
|---|---|
| 标量(0 维) | 一个数字 |
| 向量(1 维) | 一排数字 |
| 矩阵(2 维) | 一张表 |
| 张量(更高维) | 一叠表 / 一批图片 / 一段视频 |
在深度学习里,几乎所有数据最后都会变成张量:
- 一张灰度图:
[高度, 宽度] - 一张彩色图:
[通道, 高度, 宽度] - 一批图片:
[批大小, 通道, 高度, 宽度] - 一批句子的词向量:
[批大小, 序列长度, 向量维度]
1.1 第一次看张量时,最该先问什么?
先不要急着问 API,先问这三个问题:
- 它装的是什么数据?
- 每一维分别代表什么?
- 后面这份数据会被送到哪一层?
这会让你从一开始就把“形状”和“语义”绑在一起。