批量维度:先写出形状再写矩阵乘法
模型代码里的形状错误经常来自混淆样本数、输入特征数和输出维度。把维度名称写清楚,比反复试 transpose 更可靠。
▶ 本文含视频讲解▶ 教学视频手动播放 · 英语讲解
But what is a neural network?
结合模型讲解理解本文实验的背景;正文提供可独立运行的简化示例。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。
播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。
问题从哪里出现
模型代码里的形状错误经常来自混淆样本数、输入特征数和输出维度。把维度名称写清楚,比反复试 transpose 更可靠。
理解核心机制
若输入 X 为 B×D,权重 W 为 D×H,输出就是 B×H。下面用嵌套列表模拟批量线性层,明确每个求和覆盖的是输入特征维度。
动手做一个小实验
Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。
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 改成三,并给每个维度添加注释。检查单样本情况下是否意外丢失了批维。