矩阵乘法总结

矩阵是数的排列

矩阵 
矩阵
(这矩阵有2行和3列)

把矩阵与一个数相乘是容易的:

矩阵乘以常数

计算是这样的:

2×4=82×0=0
2×1=22×-9=-18

我们叫这个数 ("2")为标量,所以这乘法被称为"标量乘法".

矩阵与矩阵相乘

但若要把矩阵与矩阵相乘,我们要计算行与列的"点积"……这是什么意思?我们来看个例子:

求 第一行 和 第一列 的答案:

矩阵乘法点积

"点积" 是把 对称的元素相乘,然后把结果加起来:

(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58

我们把第一个元素相配(1 和 7),然后相乘。第二个元素(2 和 9) 和第三个元素(3 和 11)也一样,然后把结果加起来。

想多看一个例子?这是第一行与第二列

矩阵乘法下一项

(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64

第二行 和 第一列也同样做:

(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139

第二行 和 第二列

(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154

我们得到:

矩阵乘法完成

做好了!

为什么要这样做?

乍看像个过于复杂的乘法,但这是有道理的!

看看一个实例:

例子:饼店卖三种派。

  • 牛肉派卖¥3一个
  • 鸡肉派卖¥4一个
  • 素菜派卖¥2一个

这是过去4天里饼店卖的数目:

矩阵乘法表

现在来想想……星期一的销售额是这样算出来的:

牛肉派的销售额 + 鸡肉派的销售额 + 素菜派的销售额

$3×13 + $4×8 + $2×6 = $83

总销售额是价钱与销售量的点积:

($3, $4, $2) • (13, 8, 6) = ¥3×13 + ¥4×8 + ¥2×6 = ¥83

我们把价钱和销售量相配,把它们逐个相乘,然后把结果 加起来

 

换句话说:

  • 星期一的销售额是:牛肉派:¥3×13=¥39,鸡肉派:¥4×8=¥32,素菜派:¥2×6=¥12。总共是 ¥39 + ¥32 + ¥12 = ¥83
  • 星期二的销售额是:¥3×9 + ¥4×7 + ¥2×4 = ¥63
  • 星期三的销售额是:¥3×7 + ¥4×4 + ¥2×0 = ¥37
  • 星期四的销售额是:¥3×15 + ¥4×6 + ¥2×3 = ¥75

所以重点是要把价钱和销售量正确地相配。

 

明白为什么要用"点积"了吗?

 

用矩阵写出来是这样:

矩阵乘法

星期一卖了¥83的派,星期二¥63,……

(你可以把这些值打进矩阵计算器来看看。)

行与列

要表达一个矩阵有几行和几列,我们通常写 行×列。

例子:这是个 2×3 矩阵(2行和3列):

矩阵

把两个矩阵相乘时:

  • 第一个矩阵的列数必须是等于第二个矩阵的行数
  • 相乘的结果具有第一个矩阵的 行数 和第二个矩阵的 列数

例子:

矩阵乘法

在这例子里,我们把 1×3 矩阵乘以 3×4 矩阵(留意两个矩阵都有 3),相乘的结果是个 1×4矩阵。

一般来说:

m×n矩阵与n×p矩阵相乘,n 必须相同,
相乘结果是m×p矩阵。

矩阵乘法行列

乘法的次序

在算术里我们知道:

3 × 5 = 5 × 3
(乘法的互换律

但在矩阵的领域这通常是正常的(矩阵乘法并非可互换):

AB ≠ BA

当乘法的次序改变,答案亦(通常)改变

例子:

来看看次序怎样影响这矩阵相乘:

矩阵乘法次序

单位矩阵

"单位矩阵" 是矩阵领域里的 "1":

单位矩阵
3x3 单位矩阵

  • 单位矩阵是"方形"的(行与列数目相同),
  • 对角线全是1,其他全是0
  • 符号为大写字母 I

它是个特别的矩阵,因为把它和一个矩阵相乘,后者不变:

A × I = A

I × A = A

转载自:https://www.shuxuele.com/algebra/matrix-multiplying.html

  • 35
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PyTorch中,可以使用torch.mm函数进行批处理矩阵乘法。根据官方文档,torch.mm函数是用来计算两个2-D矩阵的矩阵乘法。如果input是一个n×m张量,mat2是一个m×p张量,将会输出一个n×p张量。例如,如果有两个矩阵mat1和mat2,可以使用torch.mm(mat1, mat2)来进行矩阵乘法运算。 另外,如果你需要进行批处理矩阵乘法,可以使用torch.bmm函数。该函数接受两个3-D张量作为输入,其中第一个张量的维度是(batch_size, n, m),第二个张量的维度是(batch_size, m, p),输出的维度是(batch_size, n, p)。这样可以同时对多个批次的矩阵进行乘法运算。在PyTorch官方文档中可以找到更多关于torch.bmm函数的详细信息。 因此,如果你需要进行批处理矩阵乘法,可以使用torch.bmm函数。如果只是对两个2-D矩阵进行乘法运算,可以使用torch.mm函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [torch中乘法整理,*&torch.mul()&torch.mv()&torch.mm()&torch.dot()&@&torch.mutmal()](https://blog.csdn.net/weixin_45640609/article/details/125979352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [pytorch 中矩阵乘法总结](https://blog.csdn.net/a841454735/article/details/117916532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [pytoch矩阵乘法torch.bmm](https://blog.csdn.net/weixin_34910922/article/details/122182237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值