目錄
- 引言
- 一、張量(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加速)是神經網絡訓練的核心。