是否使用转置 完全取决于对矩阵维度和乘法顺序的定义

是否使用转置 完全取决于对矩阵维度和乘法顺序的定义,核心是让矩阵乘法的维度能 “对得上”。以下从两个角度拆解:

一、本质是「维度匹配」,转置只是实现方式

矩阵相乘要求 左矩阵的列数 = 右矩阵的行数。只要满足这个规则,用不用转置、怎么定义矩阵维度,都可以灵活调整。

情况 1:用 \(A^T\)(如原公式)

  • 输入 \(\boldsymbol{x}\) 维度:\([\text{batch_size}, \text{in_features}]\)(比如 \(1 \times 3\) )
  • 权重矩阵 A 维度:\([\text{out_features}, \text{in_features}]\)(比如 \(5 \times 3\) )
  • 此时 \(A^T\) 维度是 \([\text{in_features}, \text{out_features}]\)(\(3 \times 5\) ),所以 \(\boldsymbol{x} \times A^T\) 维度是 \([1 \times 3] \times [3 \times 5] = [1 \times 5]\),满足需求。

情况 2:不用 \(A^T\),调整矩阵定义

如果不想转置,只要让 左矩阵列数 = 右矩阵行数 即可。比如:

  • 重新定义权重矩阵为 \(A'\),维度设为 \([\text{in_features}, \text{out_features}]\)(\(3 \times 5\) )
  • 此时公式直接写成 \(\boldsymbol{y} = \boldsymbol{x} \times A' + b\),因为 \([1 \times 3] \times [3 \times 5] = [1 \times 5]\),完全合法。

二、不同框架 / 教材的「习惯差异」

  • 深度学习框架(如 PyTorch、TensorFlow): 很多框架里,全连接层的权重矩阵默认定义为 \([\text{out_features}, \text{in_features}]\),所以计算时会用转置(或等价的矩阵乘法顺序)来适配输入维度。本质是框架开发者选择了一种 “约定俗成” 的维度定义方式。
  • 数学教材 / 论文: 可能直接把权重矩阵定义为 \([\text{in_features}, \text{out_features}]\),公式里就不用转置,直接相乘。

三、一句话总结

是否用转置 不影响数学本质,只是 矩阵维度定义和乘法顺序的选择。只要满足 “左列数 = 右行数”,用 A 还是 \(A^T\) 都能实现全连接层的线性变换。核心是让输入和权重矩阵 “对得上维度”,框架 / 教材的不同写法,本质是同一件事的不同表达~
posted @ 2025-06-21 18:34  m516606428  阅读(37)  评论(0)    收藏  举报