学习笔记(25):线性代数,矩阵-矩阵乘法原理 - 详解
学习笔记(25):线性代数,矩阵-矩阵乘法原理
1、代码
import torch
A = torch.arange(20).reshape(5, 4)
print(A)
A = A.to(torch.float32) # 或使用A.float()
B = torch.ones(4, 3)
print(B)
print(torch.mm(A, B))
2、执行结果
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
tensor([[ 6., 6., 6.],
[22., 22., 22.],
[38., 38., 38.],
[54., 54., 54.],
[70., 70., 70.]])
计算原理解释:
要计算 torch.mm(A, B)(矩阵乘法),需要确保 A 的列数等于 B 的行数。在你的例子中:
- A 是一个 5×4 的矩阵(5 行 4 列)。
- B 是一个 4×3 的矩阵(4 行 3 列)。
由于 A 的列数(4)等于 B 的行数(4)通过一个 就是,因此能够进行矩阵乘法,结果将5×3 的矩阵。
矩阵乘法原理
矩阵乘法 C = A × B 的计算规则是:
- C 的行数等于 A 的行数(5 行)。
- C 的列数等于 B 的列数(3 列)。
- C 中每个元素
C[i,j]等于 A 的第 i 行与 B 的第 j 列对应元素的乘积之和。

计算步骤示例
以结果矩阵 C 的第一行第一列元素 C[0,0] 为例:
- 取 A 的第 0 行:
[0, 1, 2, 3] - 取 B 的第 0 列:
[1., 1., 1., 1.] - 对应元素相乘后求和:
同理,计算其他元素:
C[0,1] = (0×1) + (1×1) + (2×1) + (3×1) = 6C[0,2] = (0×1) + (1×1) + (2×1) + (3×1) = 6- 以此类推,最终得到整个矩阵
C。
A=tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
B=tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])结果:
tensor([[ 6., 6., 6.],
[22., 22., 22.],
[38., 38., 38.],
[54., 54., 54.],
[70., 70., 70.]])
验证方法
由于 B 的所有元素都是 1,因此结果矩阵 C 的每个元素 C[i,j] 实际上等于 A 的第 i 行的所有元素之和。例如:
- A 的第 0 行和为
0+1+2+3=6,对应 C [0,:] 的所有元素。 - A 的第 1 行和为
4+5+6+7=22,对应 C [1,:] 的所有元素。 - 以此类推。
浙公网安备 33010602011771号