资讯

张量是什么?深度学习中存放数据的多维数组

2026-11-053 分钟阅读百科
TL;DR张量(Tensor)在深度学习中指多维数组,0 阶为标量、1 阶为向量、2 阶为矩阵,更高阶如彩色图像批次 [批次,通道,高,宽]、文本嵌入 [批次,序列长度,隐藏维度];它有形状、数据类型和所在设备等属性,支持广播与 GPU 并行运算,PyTorch、TensorFlow 均以之为核心数据结构;数学与物理中的张量则是遵循特定坐标变换规律的多线性对象。

张量(Tensor)在深度学习中,指的是一个多维的数字数组,它是存储和处理数据的基本单位。神经网络的输入、输出、中间结果以及模型的参数,全都以张量的形式存在。深度学习框架 TensorFlow 的名字,就意味着“张量在计算图中流动”。

从标量到高阶张量

张量可以看作是标量、向量和矩阵的推广,用“阶”或“维数”来区分。零阶张量就是标量,一个单独的数字,比如温度 25 度。一阶张量就是向量,一列数字,比如一个人的身高、体重、年龄组成的一组数。二阶张量就是矩阵,一个二维的数字表格,比如一张灰度图片,每个格子是一个像素的亮度。三阶张量可以想象成一个数字组成的立方体,比如一张彩色图片,有高度、宽度,还有红、绿、蓝三个颜色通道。更高阶的张量就难以直观地想象了,但在数学上的处理方式是一样的。

深度学习中的常见张量

在实际的深度学习中,数据通常都是成批处理的,因此张量往往有一个“批次”的维度。一批彩色图片:形状通常是“批次大小、通道数、高度、宽度”,比如 32 张 224 乘 224 的彩色图片,就是一个形状为 32、3、224、224 的四阶张量。一批文本:经过嵌入层之后,形状通常是“批次大小、序列长度、隐藏维度”,比如 8 句话、每句 512 个词元、每个词元用 4096 维的向量表示。一段视频:在图片的基础上再增加一个时间的维度,变成五阶张量。模型的参数:比如一个全连接层的权重是一个二阶张量,一个卷积层的卷积核通常是一个四阶张量。

张量的基本属性

形状:每个维度上有多少个元素,比如 32、3、224、224。在编写深度学习代码时,大量的错误都来自张量的形状不匹配,因此弄清楚每一步运算前后张量的形状非常重要。数据类型:张量中的数字用什么格式存储,比如 32 位浮点数、16 位浮点数、bfloat16、8 位整数。较低的精度可以节省内存、加快计算,被广泛用于大模型的训练和推理。所在的设备:张量存放在 CPU 的内存中还是 GPU 的显存中,参与运算的张量需要位于同一个设备上。

张量的运算

深度学习的计算本质上就是一系列的张量运算:逐元素的加减乘除;矩阵乘法,这是神经网络中计算量最大的运算;改变形状,比如把一张图片展开成一个长向量;转置和维度交换;在某个维度上求和、求平均或取最大值。广播机制允许形状不同但兼容的张量直接进行运算,比如给一个矩阵的每一行都加上同一个向量,而不需要先把向量复制成矩阵。GPU 和 TPU 等硬件正是为大规模的张量运算专门优化的,它们能够同时处理大量的元素,这是深度学习能够高效运行的关键。深度学习框架还会自动地记录张量的运算过程,以便通过自动微分计算梯度。

数学和物理中的张量

需要说明的是,在数学和物理学中,“张量”有着更加严格的定义:它不仅仅是一组数字,而是一种在坐标变换时遵循特定变换规律的几何对象,可以理解为一种多线性映射。爱因斯坦的广义相对论就是用张量来描述时空的弯曲的,材料力学中的应力张量描述了物体内部各个方向上受力的情况。深度学习中所说的张量,借用了这个名称,但通常只指多维数组本身,并不强调坐标变换的性质,两者的含义并不完全相同。此外,数学中还有张量分解等方法,比如 CP 分解、Tucker 分解,把高阶张量分解为若干个较小因子的组合,被用于数据分析和神经网络的压缩。