gpt4 book ai didi

pytorch中的matmul与mm,bmm区别说明

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章pytorch中的matmul与mm,bmm区别说明由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

pytorch中matmul和mm和bmm区别 matmulmmbmm结论 。

先看下官网上对这三个函数的介绍.

matmul

pytorch中的matmul与mm,bmm区别说明

mm

pytorch中的matmul与mm,bmm区别说明

bmm

顾名思义, 就是两个batch矩阵乘法. 。

pytorch中的matmul与mm,bmm区别说明

结论

从官方文档可以看出 。

1、mm只能进行矩阵乘法,也就是输入的两个tensor维度只能是( n × m ) (n imes m)(n×m)和( m × p ) (m imes p)(m×p) 。

2、bmm是两个三维张量相乘, 两个输入tensor维度是( b × n × m ) (b imes n imes m)(b×n×m)和( b × m × p ) (b imes m imes p)(b×m×p), 第一维b代表batch size,输出为( b × n × p ) (b imes n imes p)(b×n×p) 。

3、matmul可以进行张量乘法, 输入可以是高维. 。

补充:torch中的几种乘法。torch.mm, torch.mul, torch.matmul 。

1、点乘

点乘都是broadcast的,可以用torch.mul(a, b)实现,也可以直接用*实现.

>>> a = torch.ones(3,4)>>> atensor([[1., 1., 1., 1.],        [1., 1., 1., 1.],        [1., 1., 1., 1.]])>>> b = torch.Tensor([1,2,3]).reshape((3,1))>>> btensor([[1.],        [2.],        [3.]])>>> torch.mul(a, b)tensor([[1., 1., 1., 1.],        [2., 2., 2., 2.],        [3., 3., 3., 3.]])

当a, b维度不一致时,会自动填充到相同维度相点乘.

2、矩阵乘

矩阵相乘有torch.mm和torch.matmul两个函数。其中前一个是针对二维矩阵,后一个是高维。当torch.mm用于大于二维时将报错.

>>> a = torch.ones(3,4)>>> b = torch.ones(4,2)>>> torch.mm(a, b)tensor([[4., 4.],        [4., 4.],        [4., 4.]])
>>> a = torch.ones(3,4)>>> b = torch.ones(5,4,2)>>> torch.matmul(a, b).shapetorch.Size([5, 3, 2])
>>> a = torch.ones(5,4,2)>>> b = torch.ones(5,2,3)>>> torch.matmul(a, b).shapetorch.Size([5, 4, 3])
>>> a = torch.ones(5,4,2)>>> b = torch.ones(5,2,3)>>> torch.matmul(b, a).shape报错。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我。如有错误或未考虑完全的地方,望不吝赐教.

原文链接:https://blog.csdn.net/leo_95/article/details/89946318 。

最后此篇关于pytorch中的matmul与mm,bmm区别说明的文章就讲到这里了,如果你想了解更多关于pytorch中的matmul与mm,bmm区别说明的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com