张量的定义
张量(Tensor)是数学和物理中一个重要的概念,也是机器学习、深度学习领域的核心基础。它可以理解为向量、矩阵的高维扩展,用于描述具有多维度结构的数据或物理量。以下从定义、维度、性质及应用等方面详细介绍:
一、张量的定义
张量是一个多维数组,其核心是描述“在坐标变换下保持某种不变性的量”。具体来说:
- 在数学中,张量是向量空间及其对偶空间上的多重线性映射(涉及线性代数中的向量、矩阵运算规则)。
- 在计算机科学(尤其是深度学习)中,张量常被简化为“多维数组”,用于高效存储和处理多维度数据(如图片、文本序列、视频帧等)。
二、张量的维度(阶数)
张量的“阶数”(Rank)即其维度数量,不同阶数的张量对应不同的几何或数据结构:
| 阶数(Rank) | 名称 | 数学/物理意义 | 计算机中的示例 | 形状表示(Shape) |
|---|---|---|---|---|
| 0 阶 | 标量(Scalar) | 单个数值(无方向) | 温度(25℃)、权重(0.5) | () |
| 1 阶 | 向量(Vector) | 一维有序数组(有方向和大小) | 坐标(x, y, z)、特征向量([1.2, 3.4]) | (n,) |
| 2 阶 | 矩阵(Matrix) | 二维数组(行×列) | 灰度图(像素网格)、数据表(行=样本,列=特征) | (m, n) |
| 3 阶 | 3 阶张量 | 三维数组 | 彩色图片(宽×高×RGB通道) | (w, h, c) |
| 4 阶 | 4 阶张量 | 四维数组 | 一批彩色图片(样本数×宽×高×通道) | (b, w, h, c) |
| n 阶 | n 阶张量 | n 维数组 | 视频(帧数×宽×高×通道)、文本序列(批次×长度×特征) | (d1, d2, ..., dn) |
三、张量的核心性质
-
形状(Shape):
描述各维度的大小(如(3, 4)表示2阶张量有3行4列)。形状决定了张量的存储结构和运算规则。 -
数据类型(Dtype):
张量中元素的数值类型,如整数(int32)、浮点数(float32)、布尔值(bool)等。深度学习框架(如PyTorch、TensorFlow)会根据数据类型优化计算效率。 -
运算封闭性:
张量的加减、乘法(点积、矩阵乘)、转置、切片等操作仍返回张量,且需满足维度兼容性(如矩阵乘法要求前一个矩阵的列数=后一个矩阵的行数)。 -
广播机制(Broadcasting):
不同形状的张量在运算时,会自动扩展维度以匹配(如标量与向量相加:[1,2,3] + 2 = [3,4,5]),简化代码编写。
四、张量在深度学习中的核心作用
-
数据存储:
统一表示各类高维数据:- 图片:
(批次大小, 高度, 宽度, 通道数)(如(32, 224, 224, 3)表示32张224×224的RGB图片)。 - 文本:
(批次大小, 序列长度, 词向量维度)(如(16, 100, 768)表示16条文本,每条100个词,每个词用768维向量表示)。 - 视频:
(批次大小, 帧数, 高度, 宽度, 通道数)。
- 图片:
-
高效计算:
深度学习框架(PyTorch、TensorFlow)通过张量的向量化运算(利用GPU并行计算)大幅提升效率,避免循环遍历元素(比Python原生列表快100-1000倍)。 -
神经网络中的流动:
神经网络的输入(数据)、权重(参数)、中间结果(特征图)均以张量形式存在,层与层之间的运算本质是张量的线性/非线性变换(如卷积、池化、激活函数)。
五、张量与数组的区别
- 数组:通常指编程语言中的基础数据结构(如Python的
list、NumPy的ndarray),功能较简单,侧重存储。 - 张量:在深度学习框架中是“增强版数组”,支持:
- 自动求导(反向传播时计算梯度,用于优化模型参数)。
- GPU加速(通过CUDA等接口调用显卡算力)。
- 分布式计算(多设备/多机协同处理超大张量)。
六、常用张量操作
在深度学习中,张量的核心操作包括:
- 形状变换:
reshape(重塑维度)、transpose(转置)、squeeze/unsqueeze(压缩/增加维度)。 - 切片与索引:提取子张量(如
tensor[0, 2:5]取第0行、第2-4列的元素)。 - 数学运算:
+(加法)、@(矩阵乘法)、sum(求和)、mean(均值)。 - 广播:自动扩展低维张量以匹配高维张量的形状(如
(3,1) + (1,4) = (3,4))。
总结
张量是连接数学理论与工程实践的桥梁:在数学上,它是描述多维度关系的抽象工具;在深度学习中,它是高效处理复杂数据的“标准容器”。理解张量的维度、形状和运算规则,是掌握神经网络、数据预处理的基础。

浙公网安备 33010602011771号