统一符号规范,厘清 Python 中 */@/dot/matmul 的行为差异,避免乘法运算的隐性 bug。

维度定义

概念维度符号示例 shape
标量0维
向量1维
矩阵2维
张量n维

统一符号约定

运算符号禁止混用
哈达玛积 / /
点积/内积 /
叉积 /
矩阵乘无符号或 /
张量积 /

向量运算

运算数学定义Python输出
哈达玛积a * b向量
点积a @ b标量
叉积 (仅3D)np.cross(a, b)3D向量
外积np.outer(a, b)矩阵

矩阵运算

运算数学定义Python维度约束
哈达玛积A * Bshape 相同
矩阵乘A @ B前列=后行
克罗内克积np.kron(A, B)无约束

高维张量

批量矩阵乘法

Z = X @ Y  # shape: (B, m, p)

einsum 万能工具

运算einsum
点积'i,i->', a, b
矩阵乘'ij,jk->ik', A, B
批量矩阵乘'bij,bjk->bik', X, Y
转置'ij->ji', A

高频踩坑

坑点避坑铁律
* 当矩阵乘* 永远是哈达玛积,矩阵乘用 @
np.dot@ 混淆生产环境一律用 @/matmul
一维数组广播显式定义为 (n,1)(1,n)
外积术语混用叉积用 cross,张量积用 outer/kron

记忆口诀

  • 符号 元素乘, 点积缩并, 3D 叉积, 张量升维
  • Python* 永远元素乘,@ 才是正经数学乘
  • 维度:哈达玛积维度不变,点积矩阵乘缩并降维,叉积仅限 3D,张量积必升维