WMX · 随记
·AI· 3 分钟阅读

批量维度:先写出形状再写矩阵乘法

模型代码里的形状错误经常来自混淆样本数、输入特征数和输出维度。把维度名称写清楚,比反复试 transpose 更可靠。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

But what is a neural network?

结合模型讲解理解本文实验的背景;正文提供可独立运行的简化示例。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

模型代码里的形状错误经常来自混淆样本数、输入特征数和输出维度。把维度名称写清楚,比反复试 transpose 更可靠。

理解核心机制

若输入 X 为 B×D,权重 W 为 D×H,输出就是 B×H。下面用嵌套列表模拟批量线性层,明确每个求和覆盖的是输入特征维度。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python7 行 · 可横向滚动
x = [[1, 2, 3], [4, 5, 6]]  # B=2, D=3
w = [[1, 0], [0, 1], [1, 1]]  # D=3, H=2
bias = [0, 1]
y = [[sum(row[d] * w[d][h] for d in range(3)) + bias[h]
      for h in range(2)] for row in x]
assert y == [[4, 6], [10, 12]]
print(y)

适用边界与常见误区

不同框架的线性层可能以 H×D 存储权重,内部再转置。广播机制可以让错误形状也能运行,因此应检查语义而不只检查是否报错。

继续练习

把 B 改成一、H 改成三,并给每个维度添加注释。检查单样本情况下是否意外丢失了批维。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档