目录
- 引言
- 一、张量(Tensor)的定义与特性
- 1. 数学中的张量
- 2. 深度学习中的Tensor
- 二、标量(Scalar)是什么?
- 三、深度学习中的其他核心量
- 1. 向量(Vector)
- 2. 矩阵(Matrix)
- 3. 高阶张量(High-order Tensors)
- 4. 自动微分与计算图
- 四、张量与Tensor的区别
- 五、深度学习中的张量操作
- 六、总结
引言
在数学、物理学和深度学习中,“张量”(Tensor)是一个核心概念。然而,许多人对"张量"和"Tensor"之间的区别感到困惑,甚至对"标量"、"向量"等基础概念也存在模糊认识。本文将从基础到深度学习,系统梳理这些概念的定义、区别及其应用场景,帮助读者建立清晰的认知框架。
一、张量(Tensor)的定义与特性
1. 数学中的张量
在数学和物理学中,张量(Tensor)是一个多重线性映射,用于描述物理量在不同坐标系下的变换关系。其阶数(Rank)决定了张量的维度:
- 0阶张量:标量(Scalar),例如温度、质量。
- 1阶张量:向量(Vector),例如速度、力。
- 2阶张量:矩阵(Matrix),例如应力张量、旋转矩阵。
- 高阶张量:3阶及以上,例如视频数据(时间×高度×宽度×通道)。
张量的数学定义强调其坐标变换的不变性。例如,应力张量在不同坐标系下遵循特定的线性变换规则,但其物理意义保持一致。
2. 深度学习中的Tensor
在深度学习框架(如PyTorch、TensorFlow)中,Tensor(张量)被简化为多维数组,本质上是数学张量的计算机实现。
- 特点:
- 可运行在GPU/TPU上,加速计算。
- 支持自动微分(Autograd),是神经网络训练的核心。
- 动态调整形状,适应不同数据结构。
示例:
- 标量:
loss = 0.5
(0D Tensor)。 - 向量:
weights = [0.1, 0.3, 0.5]
(1D Tensor)。 - 矩阵:
image = [[1,2,3],[4,5,6]]
(2D Tensor)。 - 高阶张量:
video = [batch, frames, height, width, channels]
(5D Tensor)。
二、标量(Scalar)是什么?
标量是0阶张量,仅包含一个数值,无方向性。
- 特性:
- 数值大小独立于坐标系(例如温度25°C在任何坐标系下都是25°C)。
- 支持加减乘除等基本运算。
应用场景:
- 损失函数(Loss)的输出值。
- 学习率(Learning Rate)等超参数。
三、深度学习中的其他核心量
1. 向量(Vector)
- 定义:1阶张量,具有大小和方向(例如
[v1, v2, v3]
)。 - 应用:神经网络中的权重、偏差(Bias)向量。
2. 矩阵(Matrix)
- 定义:2阶张量,二维数组(例如
[3x3]
)。 - 应用:卷积核(Convolutional Kernel)、全连接层的权重矩阵。
3. 高阶张量(High-order Tensors)
- 3D张量:时间序列数据(
[batch, time_steps, features]
)。 - 4D张量:图像数据(
[batch, channels, height, width]
)。 - 5D张量:视频数据(
[batch, frames, channels, height, width]
)。
4. 自动微分与计算图
- Tensor在计算图中的角色:
- 每个操作(如加法、乘法)生成新的Tensor节点。
- 反向传播时,通过链式法则计算梯度(Gradient)。
四、张量与Tensor的区别
维度 | 数学张量 | 深度学习Tensor |
---|---|---|
定义 | 多重线性映射,强调坐标变换不变性 | 多维数组,强调计算效率 |
应用场景 | 物理学、连续介质力学 | 深度学习、计算机视觉、NLP |
存储方式 | 符号化表达(如 σ_ij ) | 数组形式(如 [1, 2, 3] ) |
计算支持 | 手动推导 | GPU加速、自动微分 |
关键区别:
- 数学张量是抽象的数学实体,而深度学习中的Tensor是计算机实现的多维数组。
- 深度学习Tensor支持动态计算图,而数学张量通常用于静态分析。
五、深度学习中的张量操作
-
创建Tensor:
import torch # 从列表创建 tensor = torch.tensor([1, 2, 3]) # 全零张量 zeros = torch.zeros(2, 3)
-
张量转换:
- Tensor ↔ NumPy数组:
torch.from_numpy()
/.numpy()
。 - Tensor ↔ 列表:
.tolist()
。
- Tensor ↔ NumPy数组:
-
张量运算:
- 加法、乘法、矩阵乘法(
@
)。 - 广播机制(Broadcasting):低维张量自动扩展到高维。
- 加法、乘法、矩阵乘法(
-
GPU加速:
tensor = tensor.to("cuda") # 将Tensor移动到GPU
六、总结
- 标量是0维数据,向量是1维,矩阵是2维,高阶张量是3维及以上。
- 深度学习中的Tensor是数学张量的计算机实现,通过多维数组高效处理数据。
- 张量操作(如自动微分、GPU加速)是神经网络训练的核心。