什么是张量:数据的形状
一个词、一句话、一批句子:数据越装越多,怎样读懂它的每一个轴?
一句话装得下,一批句子呢?
前面几课,向量帮我们装一条信息,矩阵帮我们装很多条信息。现在你要给语言模型送两句话,每句话先简化为 3 个词,每个词用 2 个数字表示。
一句话是一张 3×2 的表。两句话可以拼成 6×2,可这样有个麻烦:哪三行属于第一句话,哪三行属于第二句话?如果靠人记住分界,句子一多就很容易弄乱。
张量:多维数组,不是更长的向量
在这套 AI 教程里,张量(tensor)指按多个轴组织的数值数组。一个数字是标量;一条有顺序的数字是向量;按两个轴组织的是矩阵;更多轴继续沿用同一个思想。
| 对象 | 轴的数量 | 例子 |
|---|---|---|
| 标量 | 0 | 一个损失值,形状 [] |
| 向量 | 1 | 一个词,形状 [2] |
| 矩阵 | 2 | 一句话,形状 [3,2] |
| 三轴张量 | 3 | 两句话,形状 [2,3,2] |
这里最容易混淆两个「维」:一个 100 维向量,表示它有 100 个分量,数组却只有一个轴。形状 [2,3,100] 的数据有三个轴,每个词仍由一个 100 维向量表示。
更抽象的数学张量还涉及坐标变换性质,这里不展开。数组轴的数量也常被叫作 tensor rank,但它与线性代数里矩阵的秩不是一回事。
给每个轴一个名字
只记 [2,3,2] 还不够,还要知道每个位置是什么意思。给轴起名:[batch, sequence, features],也就是[批量里的句子数, 每句话的词数, 每个词的特征数]。
X[1,2,0]:第 2 句话,第 3 个词,第 1 个特征(索引从 0 开始)
总元素数是 2×3×2=12。多头注意力以后还会增加 head 轴;图像数据可能有批量、高、宽、颜色通道这些轴。数字表能不能相加、在哪个方向求平均,都要先知道每个轴的意义。
reshape、转置与广播,各管一件事
reshape 像把同一串珠子重新分组:[1,2,3,4,5,6] 按顺序放成 2×3 或 3×2,总数都必须是 6。它不会凭空增加数字,也不会自动理解哪行属于哪句话。
转置或轴交换则按坐标移动元素。把矩阵 [[1,2,3],[4,5,6]] 转置,会得到 [[1,4],[2,5],[3,6]];直接按原顺序 reshape 成 3×2,得到的却是 [[1,2],[3,4],[5,6]]。形状一样,不代表排列一样。
广播让一条较小的规则重复应用:给 [2,3,2] 的每个词加偏置 [10,20],等于每个词的第一个特征加 10、第二个加 20。形状 [2] 从最右侧与特征轴对齐,前面的轴视作长度 1。
[2,3,2] + [2] → [2,3,2]
[2,3,2] + [3] → 最右轴 2 与 3 冲突,不能相加
广播是元素级运算的对齐规则,不是矩阵乘法的内部维度匹配规则。不要混用。
动手拆包:同样十二个数
下面两句话的特征先用 1 到 12 这些小整数代替。切换视角,观察每个数字实际去了哪里;再试着把它们装进 5×3,看看少不了也多不了的十二个数为什么拒绝这个安排。
实际模型处理不同长度的句子时,还需要补齐与 mask,后面的语言模型章节再展开。现在先掌握一句话:形状不仅决定能不能算,也决定这一算在处理哪种信息。
总结:先读形状,再读公式
张量把数据沿有意义的轴组织起来。形状是它的包装说明,而不是一串可以随意交换的数字。
💡 用大白话梳理:这一课的核心直觉
- 向量的分量数,与数组有几个轴,是两个不同概念。
- [batch,sequence,features] 帮你定位一条信息的位置与角色。
- reshape 保持总数,轴交换按坐标重排,广播重复小规则。
- 下一课从数据的包装转向运算的规则:什么叫一个函数?
学习小测验
动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)
07 什么是函数:从输入到输出
把数字送进规则机器:读懂曲线、函数复合,以及指数与对数的来回转换。