张量与线性映射:高维数组不只是大矩阵
约 14 分钟
机器学习中张量常指带多个轴的数组,如批次×通道×高度×宽度。轴的语义、形状和广播规则与数值同样重要;维度能对上不表示计算含义正确。
轴与基
向量和矩阵是张量的低阶例子,但严格数学张量还包含坐标变换规律。工程库更偏向多维数组。使用时应说明语境,避免把“阶”“维度”“轴数”混成一个词。
收缩与爱因斯坦求和
矩阵乘法对共享指标求和,张量收缩是其推广。写出每个指标出现在哪些轴,可检查输出形状,并避免错误转置。
广播的便利与风险
广播自动扩展长度为1或缺失的轴。它可省复制,却可能让本应报错的偏置沿错误轴传播。用有名称的轴说明或显式reshape,并写小例子验证。
向量化
批量线性代数利用底层优化,通常比解释器循环快。但为追求一行表达而构造巨大中间张量,可能耗尽内存;性能要同时看时间和峰值空间。
梯度与伴随
标量损失对张量的梯度形状与参数一致,反向传播本质是局部线性映射的伴随依次作用。形状检查是调试梯度的重要第一步。
除形状外还要检查布局和连续性;转置视图有时不复制数据,后续算子却可能触发昂贵复制。性能分析要看实际内存流量,而非只数公式乘法。
练习:给批量图像线性层标出每个轴,用指标记号推导输出与偏置梯度,并验证广播方向。
小纸条
多维数组运算形状能够广播成功,为什么仍可能语义错误?