矩阵乘法的行乘列规则及为什么内维度必须匹配
定义矩阵:在开始计算前,你必须清楚地知道参与运算的两个矩阵的尺寸。一个矩阵的尺寸通常用“行数 × 列数”来描述。
检查内维度:要将一个 m×n 的矩阵 A 与一个 p×q 的矩阵 B 相乘,必须确保 A 的列数 n 与 B 的行数 p 相等。这是矩阵乘法能够进行的唯一前提条件。
1. 执行行乘列计算
当内维度 n 和 p 匹配后,得到的结果矩阵 C 的尺寸将是 m×q。其每一个元素的值,按照以下规则计算:
- 定位 结果矩阵 C 中第
i行、第j列的元素C_ij。 - 取出 矩阵 A 的第
i行的所有元素,取出 矩阵 B 的第j列的所有元素。 - 计算 对应位置元素的乘积,然后求和。
- 数学描述为:$C_{ij} = \sum_{k=1}^{n} A_{ik} * B_{kj}$
- 用大白话说:把 A 的第
i行和 B 的第j列像拉链一样对齐,逐个相乘,再把所有乘积加起来。
核心:结果矩阵的每一个元素,都是“行”与“列”的点积。
2. 理解内维度必须匹配的原因
内维度不匹配,意味着“行”和“列”的长度无法对齐,计算无法进行。
直接原因:计算一个结果元素时,你需要从 A 中取一行(有 n 个数字),从 B 中取一列(有 p 个数字)。要使这两个向量能进行点积(对应相乘再求和),它们的元素个数必须相等,即 n 必须等于 p。
根本原因:矩阵乘法的定义源于线性变换的复合。如果第一个变换的输出空间维度(由 A 的列数决定)与第二个变换的输入空间维度(由 B 的行数决定)不匹配,那么这两个变换就无法连续施加,其矩阵表示也就无法相乘。
3. 模拟一个错误场景
假设你尝试将一个 2×3 的矩阵与一个 2×2 的矩阵相乘。
- 检查:第一个矩阵有 3 列,第二个矩阵有 2 行。
3不等于2。 - 尝试计算:想要计算结果矩阵的第 1 行、第 1 列元素。你需要取第一个矩阵的第 1 行(3 个数)和第二个矩阵的第 1 列(2 个数)。
- 发现问题:一个长度为 3 的向量无法与一个长度为 2 的向量进行点积。计算在此处卡住,因为数字无法一一对应相乘。
这就是为什么编程语言或数学软件在你尝试执行这样的操作时会直接报错:“矩阵维度不匹配”。
4. 区分其他矩阵乘法
标准的矩阵乘法(即“行乘列”规则)与另一种常见的逐元素乘法完全不同。
- 标准矩阵乘法:遵循本文的行乘列规则,内维度必须匹配,结果矩阵的尺寸由外维度决定。
- 逐元素乘法:要求两个矩阵尺寸完全相同(行数相同,列数也相同)。计算时,将两个矩阵在相同位置(如都是第
i行、第j列)的元素直接相乘。这种乘法没有内维度匹配的约束。
关键区分:当人们提到“矩阵乘法”而没有特别说明时,默认指的就是需要内维度匹配的“行乘列”乘法。在编程中,np.dot(A, B) 或 A * B 可能因语言/库不同而含义不同,你必须查阅文档确认其默认行为。

暂无评论,快来抢沙发吧!