向量、矩阵、张量在 AI 中的运算与应用:解锁智能的"计算语法"
作者:Weisian
日期:2026年1月31日
在之前的文章中,我们揭开了张量的神秘面纱------它是 AI 理解多维世界的"高维容器"。从标量到向量、矩阵再到张量,我们完成了"信息打包"的升维之旅。但这些装满数据的"容器",终究需要一套"计算语法"才能真正产生智能。
就像人类用语言交流需要语法规则,AI 处理数据也需要运算逻辑:
- 为什么一张模糊的照片经过矩阵运算就能变清晰?
- 为什么一段语音的张量经过卷积就能被识别成文字?
- 为什么简单的向量点积,就能判断"你喜欢的奶茶"和"推荐的奶茶"是否匹配?
今天,我们就沿着"从一维到高维"的思路,拆解 AI 世界里最核心的 向量、矩阵、张量运算------不用复杂的数学推导,只用生活场景、代码示例和直观的公式,让你看懂:这些运算不是冰冷的数字游戏,而是 AI 理解世界、做出决策的"思考方式"。
前言:运算的本质:不是"算数",而是"建模关系"
很多人一听到"向量点积""矩阵乘法",就想到高中数学题。
但在 AI 里,这些运算从来不是为了"算出一个数",而是为了:
建模数据之间的关系,提取隐藏的模式,做出有意义的决策。
举个例子:
- 你刷短视频时,系统推荐了一条猫视频------
背后是用户向量和视频向量的点积,衡量"匹配度"; - 手机美颜自动磨皮------
背后是图像张量和卷积核矩阵的滑动乘加,识别"平滑区域"; - 语音助手听懂"放周杰伦"------
背后是音频张量经过多层矩阵变换,最终映射到"歌手标签"。
所以,AI 中的运算 = 关系建模 + 模式提取 + 决策支持。

🌰 场景:AI如何知道"你喜欢什么奶茶?"
假设你是奶茶店老板,想用 AI 预测顾客喜好。
你有两个顾客的数据:
python
# 顾客A的特征向量:[年龄, 甜度偏好, 消费频率]
顾客A = [25, 0.8, 3] # 25岁,喜欢甜(0.8),每周买3次
顾客B = [30, 0.3, 1] # 30岁,不爱甜,每周买1次
# 珍珠奶茶的特征向量:[适合年龄, 甜度级别, 受欢迎度]
珍珠奶茶 = [0.9, 0.7, 0.8]
问题:怎么判断顾客A更可能喜欢珍珠奶茶?
你的直觉可能是:"看看他们像不像"------
年龄匹配吗?甜度合适吗?消费习惯吻合吗?

在数学上,这就是"相似度计算" 。
而 AI,正是通过 向量运算 来实现的。
下面,我们就从最基础的向量运算开始,一步步升级到张量的高维操作。
一、向量运算:AI 做"基础判断"的核心逻辑
向量是 AI 处理"单个对象特征"的最小单元------一个用户的偏好、一个像素的颜色、一个词的语义,都能被封装成向量。而向量运算,就是 AI 对这些"特征清单"做的最基础的"比较、组合、筛选"。

1.1 向量加法:特征的"叠加"与"融合"
🌰 生活场景:奶茶配方的微调
你点了一杯"珍珠奶茶"(向量 [300, 200, 50, 30]:牛奶、茶底、糖、珍珠),要求"多加20ml牛奶,少加10g糖",本质就是向量加法:
原配方 + 调整量 = 新配方
[300, 200, 50, 30] + [20, 0, -10, 0] = [320, 200, 40, 30]
📝 数学公式
对于两个 n 维向量 a⃗=[a1,a2,...,an]\vec{a} = [a_1, a_2, ..., a_n]a =[a1,a2,...,an] 和 b⃗=[b1,b2,...,bn]\vec{b} = [b_1, b_2, ..., b_n]b =[b1,b2,...,bn],加法规则为:
a⃗+b⃗=[a1+b1,a2+b2,...,an+bn] \vec{a} + \vec{b} = [a_1+b_1, a_2+b_2, ..., a_n+b_n] a +b =[a1+b1,a2+b2,...,an+bn]
💻 代码示例
python
import numpy as np
# 珍珠奶茶基础配方:[牛奶, 茶底, 糖, 珍珠]
milk_tea = np.array([300, 200, 50, 30])
# 调整量:+20ml牛奶,-10g糖
adjust = np.array([20, 0, -10, 0])
# 向量加法
new_tea = milk_tea + adjust
print("调整后的配方:", new_tea) # [320 200 40 30]
✨ 运算的意义
向量加法是 AI 中"特征融合"的基础:
- 图像增强:给所有像素的 RGB 值加一个偏移量(提亮/变暗);
- 词向量:"国王 - 男人 + 女人 = 女王"的核心就是向量加减;
- 推荐系统:用户偏好 + 场景权重(如"周末")= 个性化推荐。

1.2 向量点积(内积):判断"相似度"的核心工具
🌰 生活场景:匹配你喜欢的奶茶
假设:
- 你的偏好向量:
[0.8, 0.1, 0.3, 0.9](喜欢牛奶、珍珠,不喜欢茶底); - 两款奶茶的特征向量:
- 珍珠奶茶:
[0.9, 0.2, 0.4, 0.8]; - 水果茶:
[0.2, 0.8, 0.7, 0.1]。
- 珍珠奶茶:
点积越大,说明"匹配度越高":
你 × 珍珠奶茶 = 0.8×0.9 + 0.1×0.2 + 0.3×0.4 + 0.9×0.8 = 1.62
你 × 水果茶 = 0.8×0.2 + 0.1×0.8 + 0.3×0.7 + 0.9×0.1 = 0.54
AI 会优先推荐珍珠奶茶------这就是点积的核心作用:量化两个向量的"方向一致性"。
📝 数学公式
对于向量 a⃗\vec{a}a 和 b⃗\vec{b}b ,点积(内积)为:
a⃗⋅b⃗=∑i=1naibi=∣a⃗∣∣b⃗∣cosθ \vec{a} \cdot \vec{b} = \sum_{i=1}^n a_i b_i = |\vec{a}| |\vec{b}| \cos\theta a ⋅b =i=1∑naibi=∣a ∣∣b ∣cosθ
其中 θ\thetaθ 是两个向量的夹角:夹角越小(cosθ\cos\thetacosθ 越大),点积越大,相似度越高。
💻 代码示例
python
# 你的偏好:[牛奶偏好, 茶底偏好, 糖偏好, 珍珠偏好]
user_prefer = np.array([0.8, 0.1, 0.3, 0.9])
# 两款奶茶的特征
pearl_tea = np.array([0.9, 0.2, 0.4, 0.8])
fruit_tea = np.array([0.2, 0.8, 0.7, 0.1])
# 向量点积(两种写法)
score_pearl = np.dot(user_prefer, pearl_tea)
score_fruit = user_prefer @ fruit_tea # 简写,等价于dot
print("珍珠奶茶匹配度:", score_pearl) # 1.62
print("水果茶匹配度:", score_fruit) # 0.54
✨ 运算的意义
点积是 AI 中"相似度计算"的基石:
- 推荐系统:用户偏好 × 商品特征 = 匹配得分;
- 人脸识别:两张人脸的特征向量点积,判断是否为同一人;
- NLP:两个词向量的点积,判断语义相似度(如"猫"和"猫咪")。

1.3 向量范数:衡量"特征强度"
🌰 生活场景:判断奶茶的"甜度强度"
如果把"糖、蜂蜜、果糖"作为向量 [50, 20, 10],范数就是"总甜度"的量化:
- 一阶范数(L1):∣50∣+∣20∣+∣10∣=80|50| + |20| + |10| = 80∣50∣+∣20∣+∣10∣=80(简单求和);
- 二阶范数(L2):502+202+102≈54.77\sqrt{50^2 + 20^2 + 10^2} ≈ 54.77502+202+102 ≈54.77(欧氏距离)。
📝 数学公式
- L1 范数(曼哈顿距离):∣∣a⃗∣∣1=∑i=1n∣ai∣||\vec{a}||1 = \sum{i=1}^n |a_i|∣∣a ∣∣1=∑i=1n∣ai∣;
- L2 范数(欧氏距离):∣∣a⃗∣∣2=∑i=1nai2||\vec{a}||2 = \sqrt{\sum{i=1}^n a_i^2}∣∣a ∣∣2=∑i=1nai2 。
💻 代码示例
python
# 奶茶糖分:[糖, 蜂蜜, 果糖]
sugar = np.array([50, 20, 10])
# L1范数
l1 = np.linalg.norm(sugar, ord=1)
# L2范数
l2 = np.linalg.norm(sugar, ord=2)
print("L1范数(总糖分):", l1) # 80.0
print("L2范数(甜度强度):", l2) # 54.772255750516614
✨ 运算的意义
- L1 范数:用于"稀疏化"(如特征选择,让不重要的特征值为0);
- L2 范数:防止模型过拟合(权重衰减)、计算样本间的距离;
- 归一化:将向量除以 L2 范数,得到"方向不变、长度为1"的单位向量(便于点积比较)。

1.4 向量叉积:发现"隐藏关系"
🌰 生活场景
奶茶店发现:
- 顾客A:年轻人 + 高甜度 → 爱买珍珠奶茶
- 顾客B:年轻人 + 低甜度 → 爱买水果茶
这个"→"关系,可以用叉积的方向来表示。
📝 数学意义
得到垂直于两个向量的新向量,代表一种"组合关系"。
📐 公式(3维)
a⃗×b⃗=[a2b3−a3b2a3b1−a1b3a1b2−a2b1] \vec{a} \times \vec{b} = \begin{bmatrix} a_2b_3 - a_3b_2 \\ a_3b_1 - a_1b_3 \\ a_1b_2 - a_2b_1 \end{bmatrix} a ×b = a2b3−a3b2a3b1−a1b3a1b2−a2b1
🧠 AI中的应用
- 3D计算机视觉:计算表面法向量
- 物理模拟:计算力矩、角动量
- 推荐系统中的组合特征:发现"年龄+时段"对购买的影响
🔮 叉积让AI能从现有特征中发现"隐含特征"。
🎯 向量运算总结:AI的"初级智能"
| 运算 | 生活类比 | AI意义 | 典型应用 |
|---|---|---|---|
| 加法 | 调色混合 | 特征融合 | 图像增强、语音合成 |
| 点积 | 条件匹配 | 相似度计算 | 推荐系统、分类器、注意力 |
| 叉积 | 关系发现 | 生成新特征 | 3D视觉、组合推荐 |
向量运算给了AI最基础的能力:比较、组合、评估。
但现实世界更复杂------
我们不止比较两个人,还要比较一群人的不同属性 ;
不止判断一杯奶茶,还要分析整个菜单的销售规律。
这就需要 矩阵运算。
二、矩阵运算:AI 处理"批量数据"的核心逻辑
矩阵是"多个向量的集合"------一张灰度图、一批用户偏好、一组商品特征,都能表示为矩阵。矩阵运算的核心是"批量处理"和"规则映射",让 AI 能高效处理结构化数据。

2.1 矩阵加法:批量特征的同步调整
🌰 生活场景:调整3位顾客的奶茶配方
有3位顾客的珍珠奶茶订单(矩阵),需要统一"少加10g糖":
订单矩阵(行:顾客,列:牛奶、茶底、糖、珍珠):
[
[300, 200, 50, 30], # 顾客A
[250, 180, 40, 25], # 顾客B
[320, 220, 60, 35] # 顾客C
]
调整向量:[0, 0, -10, 0]
→ 广播后变成矩阵:
[
[0, 0, -10, 0],
[0, 0, -10, 0],
[0, 0, -10, 0]
]
相加结果:
[
[300, 200, 40, 30],
[250, 180, 30, 25],
[320, 220, 50, 35]
]
📝 数学公式
对于同形状矩阵 Am×nA_{m×n}Am×n 和 Bm×nB_{m×n}Bm×n,加法规则为:
Cij=Aij+Bij C_{ij} = A_{ij} + B_{ij} Cij=Aij+Bij
(注:若其中一个是向量,会通过广播扩展为同形状矩阵)
💻 代码示例
python
# 3位顾客的订单矩阵
orders = np.array([
[300, 200, 50, 30],
[250, 180, 40, 25],
[320, 220, 60, 35]
])
# 调整量:少加10g糖(向量)
adjust = np.array([0, 0, -10, 0])
# 矩阵+向量(自动广播)
new_orders = orders + adjust
print("调整后的订单:")
print(new_orders)
✨ 运算的意义
矩阵加法是"批量特征调整"的核心:
- 图像预处理:给整幅灰度图的所有像素减均值;
- 批量归一化:对一批样本的特征同步调整,加速模型训练;
- 数据清洗:给一批用户的行为数据统一修正偏差。

2.2 矩阵乘法:AI 中的"规则映射"
🌰 生活场景:奶茶配方的"标准化转换"
假设奶茶店有两套配方体系:
- 原始配方(矩阵 AAA):3款奶茶 × 4种原料;
- 转换规则(矩阵 BBB):4种原料 × 2种成本维度(原料成本、人工成本)。
矩阵乘法就是"用转换规则,把配方映射为成本":
A(3×4):
[
[300, 200, 50, 30], # 珍珠奶茶
[250, 150, 40, 20], # 芋泥奶茶
[200, 250, 60, 10] # 水果茶
]
B(4×2):
[
[0.05, 0.01], # 牛奶:5元/100ml,人工1元/100ml
[0.08, 0.01], # 茶底:8元/100ml,人工1元/100ml
[0.10, 0.02], # 糖:10元/100g,人工2元/100g
[0.20, 0.03] # 配料:20元/100g,人工3元/100g
]
A×B(3×2):
[
[300×0.05+200×0.08+50×0.10+30×0.20, 300×0.01+...+30×0.03], # 珍珠奶茶成本
[250×0.05+150×0.08+40×0.10+20×0.20, ...], # 芋泥奶茶成本
[200×0.05+250×0.08+60×0.10+10×0.20, ...] # 水果茶成本
]
📝 数学公式
对于矩阵 Am×kA_{m×k}Am×k 和 Bk×nB_{k×n}Bk×n,乘积 Cm×nC_{m×n}Cm×n 的元素为:
Cij=∑t=1kAit×Btj C_{ij} = \sum_{t=1}^k A_{it} × B_{tj} Cij=t=1∑kAit×Btj
核心规则:前矩阵的列数 = 后矩阵的行数,结果矩阵的形状为"前行数 × 后列数"。
💻 代码示例
python
# 3款奶茶 × 4种原料
A = np.array([
[300, 200, 50, 30],
[250, 150, 40, 20],
[200, 250, 60, 10]
])
# 4种原料 × 2种成本
B = np.array([
[0.05, 0.01],
[0.08, 0.01],
[0.10, 0.02],
[0.20, 0.03]
])
# 矩阵乘法
cost = A @ B # 等价于np.matmul(A, B)
print("每款奶茶的成本(原料成本, 人工成本):")
print(cost)
# [[48. 9.4]
# [38.5 7.7]
# [40. 8.1]]
✨ 运算的意义
矩阵乘法是 AI 中"特征变换"的核心:
- 线性回归:特征矩阵 × 权重矩阵 = 预测值;
- 图像变换:图片矩阵 × 旋转矩阵 = 旋转后的图片;
- 神经网络全连接层:输入特征 × 权重矩阵 = 输出特征(本质就是矩阵乘法)。

🧠 AI中的核心应用
1. 神经网络的全连接层
python
# 一个简单的神经网络层
输入特征 = 784 # 28×28图片展平
隐藏层大小 = 128
输出类别 = 10 # 数字0-9
# 权重矩阵:W1(784×128), W2(128×10)
# 前向传播:
输入数据 = X # (batch_size, 784)
隐藏层 = X @ W1 # (batch_size, 128) ← 矩阵乘法!
输出层 = 隐藏层 @ W2 # (batch_size, 10)
2. 推荐系统的协同过滤
python
# 用户-物品评分矩阵分解
评分矩阵 = R # (用户数×物品数),很多缺失值
用户特征 = U # (用户数×k)
物品特征 = V # (物品数×k)
# 目标:R ≈ U @ V^T
# 通过矩阵乘法,用低维特征重建评分矩阵
预测评分 = 用户特征 @ 物品特征.T
3. 自注意力机制(核心中的核心)
python
# Transformer的自注意力(简化)
查询Q = X @ W_Q # (batch, seq_len, d_k)
键K = X @ W_K # (batch, seq_len, d_k)
值V = X @ W_V # (batch, seq_len, d_v)
注意力分数 = Q @ K.transpose(-1, -2) # 矩阵乘法!(batch, seq_len, seq_len)
⚡ 矩阵乘法的威力 :
一次运算,同时完成:
- 所有样本的变换
- 所有特征的综合
- 所有关系的建模
这就是为什么GPU擅长AI计算 ------
GPU有成千上万个核心,能并行计算 矩阵乘法的每个元素,
而CPU只能串行计算。
2.3 矩阵转置与逆:调整"数据视角"
🌰 生活场景:奶茶订单的"行列互换"
原始订单矩阵(行:顾客,列:奶茶):
[
[2, 1, 0], # 顾客A:2杯珍珠,1杯芋泥
[0, 3, 2], # 顾客B:3杯芋泥,2杯水果茶
[1, 0, 4] # 顾客C:1杯珍珠,4杯水果茶
]
转置后(行:奶茶,列:顾客):
[
[2, 0, 1], # 珍珠奶茶:顾客A买2杯,C买1杯
[1, 3, 0], # 芋泥奶茶:顾客A买1杯,B买3杯
[0, 2, 4] # 水果茶:顾客B买2杯,C买4杯
]
转置的核心是"换视角"------从"顾客买了什么"变成"奶茶被谁买了"。
📝 数学公式
- 矩阵转置:AijT=AjiA^T_{ij} = A_{ji}AijT=Aji;
- 矩阵逆:若 A×A−1=IA×A^{-1}=IA×A−1=I(单位矩阵),则 A−1A^{-1}A−1 是 AAA 的逆(用于"还原"变换)。
💻 代码示例
python
# 订单矩阵:行=顾客,列=奶茶
orders = np.array([
[2, 1, 0],
[0, 3, 2],
[1, 0, 4]
])
# 转置
orders_T = orders.T
print("转置后的订单(行=奶茶,列=顾客):")
print(orders_T)
# 矩阵逆(仅方阵可用)
A = np.array([[1, 2], [3, 4]])
A_inv = np.linalg.inv(A)
print("\n矩阵A的逆:")
print(A_inv)
print("验证:A×A_inv = \n", A @ A_inv) # 近似单位矩阵
✨ 运算的意义
- 转置:适配不同模型的输入格式(如 PyTorch 的通道在前/在后);
- 逆矩阵:求解线性方程组(如线性回归的闭式解)、还原变换(如解卷积)。
2.4 哈达玛积(逐元素乘):特征的"精细化调整"
🌰 生活场景:对不同顾客使用不同的促销策略
数学意义:两个同形状矩阵对应元素相乘。
python
# 顾客购买记录(5×3)
购买记录 = [
[3, 2, 1], # 顾客1:奶茶、珍珠、糖的购买次数
[1, 5, 2],
[4, 1, 3],
[2, 3, 4],
[5, 2, 1]
]
# 促销权重:针对不同商品的不同折扣力度
促销权重 = [
[0.9, 1.2, 0.8], # 奶茶打9折,珍珠加量20%,糖打8折
[0.9, 1.2, 0.8],
[0.9, 1.2, 0.8],
[0.9, 1.2, 0.8],
[0.9, 1.2, 0.8]
]
调整后 = 购买记录 * 促销权重 # 逐元素相乘
📐 公式
A⊙B=[a11b11a12b12a21b21a22b22] A \odot B = \begin{bmatrix} a_{11}b_{11} & a_{12}b_{12} \\ a_{21}b_{21} & a_{22}b_{22} \end{bmatrix} A⊙B=[a11b11a21b21a12b12a22b22]
🧠 AI中的应用
- 注意力权重的应用 :
attention_weights * values - 门控机制:LSTM/GRU中的门控信号
- 特征调制:StyleGAN中的风格迁移
🎛️ 哈达玛积是AI的"精细调节旋钮"。
🎯 矩阵运算总结:AI的"系统思维"
| 运算 | 生活类比 | AI意义 | 典型应用 |
|---|---|---|---|
| 矩阵加法 | 批量补货 | 批量调整 | 批量归一化、残差连接 |
| 矩阵乘法 | 多因素分析 | 线性变换 | 神经网络、推荐系统、注意力 |
| 转置 | 视角转换 | 数据重构 | 注意力计算、矩阵分解 |
| 哈达玛积 | 个性化促销 | 特征调制 | 注意力应用、门控机制 |
矩阵运算让AI具备了"系统思考"能力 ------
不再是一个一个处理,而是批量处理、建模关系、系统分析。

但现实世界不仅有表格,还有时间、空间、颜色、层次 ......
这就需要 张量运算。
三、张量运算:AI 处理"多维数据"的终极逻辑
张量是≥3维的数组,能描述更复杂的数据结构:
- 彩色图片:
(高度, 宽度, 通道) - 视频:
(时间, 高度, 宽度, 通道) - 批量文本:
(批次, 序列长度, 词向量维度)
张量运算的本质:在保持数据结构的同时进行计算。
张量是向量、矩阵的高维扩展,其运算的核心是"保留维度语义的同时,完成批量、结构化的计算"。我们聚焦 AI 中最核心的 4 种张量运算,用"图片/视频"作为例子,让你看懂运算的本质。

3.1 张量卷积:AI "提取局部特征"的核心
🌰 生活场景:用"磨皮模板"处理自拍
你手机的美颜功能,本质是用一个 3×3 的"柔化卷积核"(张量),在照片张量上滑动:
- 输入:224×224×3 的彩色照片(3D 张量);
- 卷积核:3×3×3 的柔化模板(3D 张量,对应 RGB 三通道);
- 运算:卷积核在照片上逐像素滑动,计算局部加权平均,输出"磨皮后的照片"。
📝 数学公式
对于输入张量 XH×W×CX_{H×W×C}XH×W×C 和卷积核 KkH×kW×CK_{kH×kW×C}KkH×kW×C,卷积运算为:
Yij=∑m=1kH∑n=1kW∑c=1CXi+m−1,j+n−1,c×Km,n,c Y_{ij} = \sum_{m=1}^{kH} \sum_{n=1}^{kW} \sum_{c=1}^C X_{i+m-1,j+n-1,c} × K_{m,n,c} Yij=m=1∑kHn=1∑kWc=1∑CXi+m−1,j+n−1,c×Km,n,c
核心:局部感受野------每个输出像素只由输入的局部区域决定。
💻 代码示例(PyTorch)
python
import torch
import torch.nn as nn
# 模拟一张彩色照片:1张 × 3通道 × 224高 × 224宽
img = torch.randn(1, 3, 224, 224) # (N, C, H, W)
# 定义卷积层(磨皮效果:3×3平均卷积核)
conv = nn.Conv2d(
in_channels=3, # 输入3个颜色通道
out_channels=3, # 输出3个颜色通道
kernel_size=3, # 3×3卷积核
padding=1, # 保持尺寸不变
bias=False
)
# 手动设置平均卷积核(柔化/磨皮)
conv.weight.data = torch.ones(3, 3, 3, 3) / 9.0
# 卷积运算(磨皮)
smooth_img = conv(img)
print("输入形状:", img.shape) # torch.Size([1, 3, 224, 224])
print("输出形状:", smooth_img.shape) # torch.Size([1, 3, 224, 224])
✨ 运算的意义
卷积是计算机视觉的基石:
- 图像识别:浅层卷积提取边缘、纹理,深层卷积提取人脸、物体;
- 语音识别:1D 卷积提取音频的频率特征;
- 视频分析:3D 卷积同时提取空间(画面)和时间(帧)特征。

3.2 张量重塑(Reshape):换"打包方式"不换内容
🌰 生活场景:把"一摞照片"装进不同的信封
你有 32 张 224×224×3 的照片(4D 张量:32×224×224×3):
- 想输入 CNN:保持 4D 形状(32,3,224,224);
- 想输入全连接层:重塑为 2D 矩阵(32, 224×224×3=150528)。
重塑的核心是"维度重组"------数据不变,只是"打包方式"变了。
📝 核心规则
- 重塑前后的总元素数必须相等:32×3×224×224=32×15052832×3×224×224 = 32×15052832×3×224×224=32×150528;
- 维度顺序可调整(如 transpose),但需保留语义(如"通道"维度)。
💻 代码示例
python
# 32张彩色照片:(32, 3, 224, 224)
batch = torch.randn(32, 3, 224, 224)
print("原始形状:", batch.shape)
# 重塑为:32个样本 × 150528个特征
flattened = batch.view(32, -1) # -1 自动计算维度
print("展平后形状:", flattened.shape) # torch.Size([32, 150528])
# 还原回原始形状
restored = flattened.view(32, 3, 224, 224)
print("还原后形状:", restored.shape) # torch.Size([32, 3, 224, 224])
✨ 运算的意义
重塑是 AI 模型中"模块衔接"的关键:
- CNN → 全连接层:将高维特征张量展平为矩阵;
- Transformer:将图片张量(H×W×C)重塑为序列张量(N×C);
- 批量处理:将 (8,4,224,224,3) 重塑为 (32,224,224,3),统一批次大小。
3.3 张量转置:高维视角切换
🌰 生活场景
整理衣柜,把"季节×类型×颜色"的排列,改为"颜色×季节×类型"。
📝 数学意义
交换任意两个维度。
python
# 视频数据:(批次, 时间, 高, 宽, 通道)
video = torch.randn(8, 30, 224, 224, 3) # 8个视频,每个30帧
# 转换为通道优先格式(PyTorch卷积要求)
video_conv = video.permute(0, 4, 1, 2, 3) # (8, 3, 30, 224, 224)
# 维度变化:0→0, 4→1, 1→2, 2→3, 3→4
# 注意力机制中的转置
# Q: (batch, seq_len, dim)
# K: (batch, seq_len, dim)
attention_scores = torch.matmul(Q, K.transpose(1, 2)) # (batch, seq_len, seq_len)
# 这里transpose(1,2)交换第1和第2维度
🧠 AI中的应用
- 框架兼容:PyTorch(N,C,H,W) ↔ TensorFlow(H,W,C)
- 注意力计算 :
Q @ K^T需要转置K的序列维和特征维 - 张量分解:改变维度顺序以优化计算
🔀 张量转置让AI能按最有效的方式组织数据。

3.4 张量广播:用"小规则"处理"大数据"
🌰 生活场景:用"统一的甜度标准"调整所有奶茶
你有 1000 款奶茶的配方张量(1000×4),需要给所有奶茶"减 10g 糖":
- 调整量:向量
[0, 0, -10, 0](1×4); - 广播:自动将调整量扩展为 1000×4 的张量,再与配方张量相加。
📝 广播规则(简化版)
- 从右往左对齐维度;
- 维度大小为 1 的,自动复制到匹配对方的大小;
- 非 1 且不相等的维度,报错。
💻 代码示例
python
# 1000款奶茶 × 4种原料
teas = torch.randn(1000, 4)
# 调整量:减10g糖(第3列)
adjust = torch.tensor([0, 0, -10, 0]) # (4,)
# 广播运算:adjust 自动扩展为 (1000,4)
new_teas = teas + adjust
print("原始形状:", teas.shape) # torch.Size([1000, 4])
print("调整后形状:", new_teas.shape) # torch.Size([1000, 4])
✨ 运算的意义
广播是 AI 中"批量归一化"的核心:
- 图像预处理:给一批图片(32×224×224×3)减去 RGB 均值(3,);
- 模型训练:给批量输出(32,1000)加偏置(1000,);
- 节省内存:无需复制重复的规则张量,直接复用。

3.5 张量乘法:高维关系的建模
张量乘法有多种形式,最重要的三种:
1. 张量缩并(Einstein求和)
生活场景:分析"用户×时间×商品"的三维购买记录,找出"用户×商品"的稳定偏好。
数学意义:沿着指定维度求和,降低张量阶数。
python
# 三维购买记录:(用户, 时间, 商品)
# 5个用户,7天,3种商品
purchase = torch.randn(5, 7, 3)
# 计算每个用户对每种商品的总购买量(缩并时间维度)
user_item = torch.einsum('utg->ug', purchase) # 形状:(5, 3)
# 等价于:
user_item = purchase.sum(dim=1) # 沿时间维度求和
2. 张量点积(高阶)
生活场景:在"用户×特征×时间"的三维数据中,用三维权重张量进行复杂预测。
数学意义:在多个维度上同时进行点积。
python
# 输入:用户行为序列 (batch, seq_len, features)
x = torch.randn(32, 50, 128)
# 三维卷积核:(输出通道, 输入通道, 时间宽度, 特征宽度)
kernel = torch.randn(64, 128, 3, 5)
# 3D卷积 = 高维张量点积
output = torch.nn.functional.conv2d(
x.unsqueeze(1), # 增加通道维:(32, 1, 50, 128)
kernel, # (64, 128, 3, 5)
padding=(1, 2) # 时间补1,特征补2
) # 输出:(32, 64, 50, 128)
3. 批量矩阵乘法
生活场景:同时处理32个句子中每个词的注意力计算。
数学意义:对批次的每个样本独立进行矩阵乘法。
python
# 多头注意力中的批量矩阵乘法
# Q: (batch, heads, seq_len, head_dim)
# K: (batch, heads, seq_len, head_dim)
attn_scores = torch.matmul(Q, K.transpose(-2, -1)) # (batch, heads, seq_len, seq_len)
# 这等价于对每个head、每个batch独立做矩阵乘法
# for b in range(batch):
# for h in range(heads):
# attn_scores[b,h] = Q[b,h] @ K[b,h].T
3.6 爱因斯坦求和约定(einsum):张量运算的通用语言
python
# einsum能表达任何张量运算
# 基本语法:'输入维度->输出维度'
# 1. 向量点积
dot = torch.einsum('i,i->', a, b)
# 2. 矩阵乘法
matmul = torch.einsum('ij,jk->ik', A, B)
# 3. 批量矩阵乘法
batch_matmul = torch.einsum('bij,bjk->bik', A, B)
# 4. 注意力计算(完整版)
# Q: (b, h, t, d), K: (b, h, t, d), V: (b, h, t, d)
attn_output = torch.einsum('bhtd,bhsd,bhsv->bhtv', Q, K, V)
# 读作:对d和s求和,得到(b, h, t, v)
🌌 einsum的伟大之处 :
用一行代码清晰表达复杂的高维运算,避免嵌套循环和手动转置。
🌰 生活场景:计算视频中"每帧的平均亮度"
视频张量:300帧 × 1080高 × 1920宽 × 3通道(4D 张量);
需求:计算每帧的平均亮度(输出 300,)。
用 einsum 可以"一句话"描述运算:
einsum("f h w c -> f", video)
解释:
f=帧,h=高,w=宽,c=通道;-> f:输出只保留帧维度;- 隐含逻辑:对 h、w、c 维度求和,再取平均。
📝 语法规则
einsum("输入维度 -> 输出维度", 张量):
- 维度用单个字母表示(如 b=batch, h=height);
- 重复出现的维度:表示"对该维度求和";
- 输出维度:表示"保留的维度"。
💻 代码示例
python
# 模拟视频张量:300帧 × 1080高 × 1920宽 × 3通道
video = torch.randn(300, 1080, 1920, 3)
# 计算每帧的平均亮度
frame_brightness = torch.einsum("f h w c -> f", video) / (1080*1920*3)
print("每帧平均亮度形状:", frame_brightness.shape) # torch.Size([300])
# 进阶:计算自注意力得分(替代多次转置+乘法)
# Q: (32, 50, 512), K: (32, 50, 512)
Q = torch.randn(32, 50, 512)
K = torch.randn(32, 50, 512)
# 计算注意力得分:(32,50,50)
attn_scores = torch.einsum("b i d, b j d -> b i j", Q, K)
print("注意力得分形状:", attn_scores.shape) # torch.Size([32, 50, 50])
✨ 运算的意义
einsum 是高维张量运算的"瑞士军刀":
- 替代复杂的转置、求和、乘法组合;
- 可读性强:直接用维度描述运算逻辑;
- 通用性强:支持任意高维张量的自定义运算(如注意力、张量分解)。

🎯 张量运算总结:AI的"高维思维"
| 运算 | 生活类比 | AI意义 | 典型应用 |
|---|---|---|---|
| 卷积 | 放大镜扫描 | 局部特征提取 | CNN、边缘检测、纹理分析 |
| 重塑 | 乐高重组 | 形状转换 | 网络层接口、多头注意力 |
| 转置 | 衣柜整理 | 维度重排 | 框架兼容、注意力计算 |
| 广播 | 模板复制 | 智能形状匹配 | 批量归一化、位置编码 |
| 张量乘法 | 多维分析 | 高维关系建模 | 3D卷积、einsum运算 |
张量运算让AI具备了真正的"高维智能" ------
能在保持数据结构(时间、空间、通道)的同时进行计算,
理解图像的局部与全局,
理解语言的顺序与依赖,
理解视频的时空连续性。

四、从运算到应用:向量、矩阵、张量如何撑起 AI 系统
我们用一张表,总结不同维度运算在 AI 核心场景中的应用:
| 运算类型 | 核心应用场景 | 典型例子 | 运算的核心价值 |
|---|---|---|---|
| 向量运算 | 单样本特征处理 | 词向量相似度、用户偏好匹配、图像像素调整 | 量化特征的"相似度"和"偏移量" |
| 矩阵运算 | 批量结构化数据处理 | 线性回归、全连接层、订单/配方转换 | 批量特征的"规则映射"和"维度转换" |
| 张量卷积 | 局部特征提取 | 图像识别、语音特征提取、视频动作识别 | 保留空间/时间结构,提取层次化特征 |
| 张量重塑 | 模块衔接 | CNN→全连接层、图片→序列(Transformer) | 适配不同模型的输入格式,不丢失信息 |
| 张量广播 | 批量归一化 | 图像均值消减、模型偏置添加 | 高效复用规则,节省内存 |
| 张量einsum | 高维自定义运算 | 自注意力计算、视频特征聚合 | 简化高维运算逻辑,提升可读性 |
🌰 完整案例:AI 识别一张猫图的运算流程
- 输入 :一张猫图 → 3D 张量
(224,224,3); - 预处理 :
- 广播:减去 RGB 均值
(3,)→ 归一化; - 重塑:转为
(1,3,224,224)(适配 PyTorch 输入);
- 广播:减去 RGB 均值
- CNN 特征提取 :
- 卷积:用 64 个 3×3 卷积核 → 输出
(1,64,224,224); - 池化:下采样 → 输出
(1,64,112,112);
- 卷积:用 64 个 3×3 卷积核 → 输出
- 特征展平 :
- 重塑:
(1,64×112×112) = (1,802816);
- 重塑:
- 分类预测 :
- 矩阵乘法:展平特征 × 全连接层权重 → 输出
(1,1000); - 向量运算:Softmax → 概率分布,取最大值 → 识别为"猫"。
- 矩阵乘法:展平特征 × 全连接层权重 → 输出
整个过程,就是向量、矩阵、张量运算的组合------没有这些运算,AI 就无法从像素中"读懂"图片内容。

五、实战:一个完整的AI运算流程
让我们看一个完整例子:AI如何识别手写数字?
5.1 数据准备:从图片到张量
python
import torch
import torch.nn as nn
import torch.nn.functional as F
# 1. 原始数据:一张28×28的手写数字图片
# 在计算机中存储为0-255的整数矩阵
original_image = [
[0, 0, 0, ..., 255, 0], # 28行
...
] # 形状:(28, 28)
# 2. 转换为张量并归一化
image_tensor = torch.tensor(original_image, dtype=torch.float32) / 255.0
# 现在值在0-1之间,形状:(28, 28)
# 3. 添加批次维度和通道维度
# 卷积层要求:(批次, 通道, 高, 宽)
input_tensor = image_tensor.unsqueeze(0).unsqueeze(0) # (1, 1, 28, 28)
5.2 卷积层运算:提取特征
python
# 定义第一个卷积层
conv1 = nn.Conv2d(1, 32, kernel_size=3, padding=1)
# 权重形状:(32, 1, 3, 3)
# 偏置形状:(32,)
# 前向传播(实际发生的过程):
# 1. 输入张量:(1, 1, 28, 28)
# 2. 卷积核滑动:32个3×3的窗口扫描整张图
# 3. 每个位置计算:输入3×3区域与卷积核的点积 + 偏置
# 4. 结果:32张特征图,每张28×28
x = conv1(input_tensor) # 形状:(1, 32, 28, 28)
# 应用激活函数(ReLU):逐元素运算
x = F.relu(x) # 负值变0,正值不变
# 池化层:下采样,保留主要特征
x = F.max_pool2d(x, 2) # 形状:(1, 32, 14, 14)
# 每个2×2区域取最大值,尺寸减半
5.3 全连接层运算:分类决策
python
# 展平:从特征图变为向量
x = x.view(1, -1) # 形状:(1, 32*14*14) = (1, 6272)
# 全连接层:矩阵乘法
fc1 = nn.Linear(6272, 128) # 权重形状:(128, 6272)
x = fc1(x) # (1, 128)
x = F.relu(x)
# 输出层:10个数字的概率
fc2 = nn.Linear(128, 10) # (10, 128)
logits = fc2(x) # (1, 10)
# Softmax:将分数转换为概率
probs = F.softmax(logits, dim=1) # (1, 10)
# 例如:[0.01, 0.01, 0.85, 0.02, ...] ← 可能是数字"2"
5.4 损失计算与反向传播
python
# 假设真实标签是数字"2"(索引2)
target = torch.tensor([2])
# 计算交叉熵损失
loss = F.cross_entropy(logits, target)
# 反向传播:自动计算所有参数的梯度
loss.backward()
# 梯度下降更新参数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
optimizer.step() # 参数 = 参数 - 学习率 × 梯度
这个过程中涉及的所有运算:
- 张量创建与重塑:准备数据
- 卷积(张量乘法):提取空间特征
- 逐元素运算:ReLU激活、池化
- 矩阵乘法:全连接层
- Softmax:概率转换
- 损失计算:标量运算
- 自动微分:计算所有梯度
- 梯度下降:参数更新
🎯 这就是一个完整AI模型的"数学三部曲" :
向量 → 矩阵 → 张量 → 预测 → 损失 → 梯度 → 更新
六、运算的硬件加速:为什么GPU这么快?
你可能听说过:AI训练需要GPU。但为什么?
核心原因:AI运算的本质是并行化的张量运算。
6.1 CPU vs GPU:不同的设计哲学
python
# CPU方式(串行):
result = []
for i in range(1000):
for j in range(1000):
result[i][j] = a[i][j] + b[i][j]
# 需要100万次循环,一次一次计算
# GPU方式(并行):
result = a + b # 一次性对所有元素进行加法
# GPU有成千上万个核心,每个核心计算一个元素
6.2 矩阵乘法的GPU加速
python
# 两个大矩阵相乘
A = torch.randn(4096, 4096).cuda() # 放在GPU上
B = torch.randn(4096, 4096).cuda()
# CPU可能需要几秒钟
# GPU(如A100)只需几毫秒!
C = torch.matmul(A, B)
为什么这么快?
- 并行计算:4096×4096=16,777,216个元素同时计算
- 内存带宽:GPU有高带宽内存,快速读取数据
- 专用硬件:Tensor Core专为矩阵乘法优化
- 批处理优化:一次性处理整个批次
6.3 现代AI芯片的运算优化
| 芯片类型 | 专长 | 典型运算 | 加速原理 |
|---|---|---|---|
| GPU | 并行浮点运算 | 矩阵乘法、卷积 | 数千个核心并行 |
| TPU | 矩阵乘法 | 神经网络推理 | 脉动阵列、量化计算 |
| NPU | AI推理 | 卷积、注意力 | 专用指令集、内存优化 |
⚡ 硬件与算法的共同进化 :
AI算法需要并行运算 → 硬件提供并行能力 → 新算法利用更多并行性 → ...
总结:运算的本质,是 AI "理解世界的逻辑"
我们从最简单的向量加法开始,
一路走到复杂的张量卷积和注意力机制,
看到了AI如何通过数学运算,
从原始数据中提取模式、做出预测、不断学习。
回顾我们的"数学三部曲":
-
向量运算:AI的"基础直觉"
- 比较、组合、评估单个对象
- 核心:点积 = 相似度计算
-
矩阵运算:AI的"系统思维"
- 批量处理、关系建模、线性变换
- 核心:矩阵乘法 = 网络中的信息流动
-
张量运算:AI的"高维智能"
- 保持结构、局部感知、时空理解
- 核心:卷积 = 空间特征提取,注意力 = 关系建模
这些运算不只是数学符号,它们是:
- 推荐系统"猜你喜欢"的匹配算法
- 人脸识别"认出你"的特征提取器
- 语音助手"听懂话"的序列处理器
- 自动驾驶"看懂路"的视觉理解器
运算的意义,远超过计算本身:
- 向量点积,让AI知道"你喜欢的我也喜欢"
- 矩阵乘法,让AI学会"从特征到决策的映射"
- 张量卷积,让AI看到"边缘、纹理、物体"
- 注意力机制,让AI理解"这个词和那个词的关系"
每一次你刷到精准的短视频推荐,
每一次你用人脸解锁手机,
每一次语音助手正确响应你的命令,
背后都是这些运算在默默工作。
🌟 运算,是AI从数据中提取智慧的过程 。
数据是矿石,模型是熔炉,而运算就是那炼金的火焰。
下次当你惊叹AI的智能时,
不妨想一想:
那些在芯片中飞速流转的向量、矩阵、张量,
正通过精妙的数学运算,
把冰冷的数字,变成温暖的理解。
运算不说话,但它让AI有了思考的能力------
在每一次计算中,为你创造智能。

延伸思考
随着AI发展,新的运算不断涌现:
- 图神经网络:图结构上的消息传递
- 神经渲染:3D场景的微分渲染
- 量子机器学习:量子态上的线性代数
但无论形式如何变化,
核心依然是:用数学运算,从数据中提取模式。
这就是AI的永恒主题------
用计算,理解世界。
运算不说话,但它一直在帮 AI,读懂这个世界。