pytorch中提供了 matmulmmbmm等矩阵的乘法运算功能,但其具体计算细节和场景截然不同,应予以注意和区别。

1. torch.mm

该函数即为矩阵的乘法,torch.mm(tensor1, tenor2),参与计算的两个张量必须为二维张量(即矩阵),其结果张量out的维度关系满足:o u t ( p × q ) = t 1 ( p × m ) ∗ t 2 ( m × q ) out(p\times q)=t_1(p\times m)*t_2(m\times q)out(p×q)=t1​(p×m)∗t2​(m×q)

2. torch.bmm

该函数提供了batch维度的矩阵乘法运算,即batch内对应的矩阵两两相乘,因此要求参与计算的两个张量必须为三维张量,其中第一个维度为batch_size,必须相同,其结果张量 out的维度关系满足:o u t ( b × p × q ) = t 1 ( b × p × m ) ∗ t 2 ( b × m × q ) out(b\times p \times q)=t_1(b\times p\times m)*t_2(b\times m\times q)out(b×p×q)=t1​(b×p×m)∗t2​(b×m×q)

3. torch.matmul

该函数的功能相较于前面两个要丰富的多,其支持参与运算的两个张量有不同的维度,计算的机理也各不相同,具体包括:

(1) 两个张量均为1维张量(即向量)时,计算向量的内积

(2) 两个张量均为2维张量(即矩阵)时,计算矩阵的乘法

(3) 第一个向量为1维张量,第二个张量为2维张量,对第一个张量视情进行broadcast,然后进行矩阵乘法,在将上述结果squeeze为1维;

(4) 第二个向量为1维张量,第一个张量为2维张量,计算矩阵和向量的乘法;

(5) 两个向量维度至少为1,且其中至少一个张量的维度大于2;则先进行broadcast,然后进行bmm操作,最后将上述结果转换会broadcast之前的效果。

【Pytorch】对比matual,mm和bmm函数相关推荐

  1. pytorch矩阵乘法mm,bmm

    文章目录 矩阵维度 矩阵乘法 torch.mm torch.bmm torch.matmul 矩阵维度 首先需要确认多维矩阵每个维度的对应含义. a = torch.tensor([[[3.], [1 ...

  2. pytorch matmul和mm和bmm区别

    pytorch中matmul和mm和bmm区别 matmul mm bmm 结论 先看下官网上对这三个函数的介绍. matmul mm bmm 顾名思义, 就是两个batch矩阵乘法. 结论 从官方文 ...

  3. 关于torch.bmm()函数计算过程

    很多框架中提供的矩阵乘法都是出于简化计算的考虑,很多情况下在进行计算时候都会牵扯到 batch size 这一个维度,这就使得很多矩阵的计算是三维的,Pytorch中的bmm()函数就可以很方便的实现 ...

  4. torch.bmm 函数

    torch.bmm 函数 这里只是记录一下,为了以后个人方便查找. 具体参考:pytorch官方文档 torch.bmm(input, mat2, *, deterministic=False, ou ...

  5. Pytorch中tensor.view().permute().contiguous()函数理解

    Pytorch中tensor.view().permute().contiguous()函数理解 yolov3中有一行这样的代码,在此记录一下三个函数的含义 # 例子中batch_size为整型,le ...

  6. Pytorch之torch.nn.functional.pad函数详解

    torch.nn.functional.pad是PyTorch内置的矩阵填充函数 (1).torch.nn.functional.pad函数详细描述如下: torch.nn.functional.pa ...

  7. Pytorch的使用:torch.gather函数

    Pytorch的使用:torch.gather函数 **torch.gather()** 作用:方便从批量tensor中获取特定化维度指定索引下的数据,该索引往往是乱序的. 首先看一下官方文档中的3维 ...

  8. 机器学习9:关于pytorch中的zero_grad()函数

    机器学习9:关于pytorch中的zero_grad()函数 本文参考了博客Pytorch 为什么每一轮batch需要设置optimizer.zero_grad. 1.zero_grad()函数的应用 ...

  9. 【pytorch】torch.mm,torch.bmm以及torch.matmul的使用

    torch.mm torch.mm是两个矩阵相乘,即两个二维的张量相乘 如下面的例子 mat1 = torch.randn(2,3) print("mat1=", mat1)mat ...

最新文章

  1. [GXOI/GZOI2019]旧词——树链剖分+线段树
  2. 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc
  3. python编程计算器_python怎么编写计算器程序
  4. 满屏的指标?删了吧,手把手教你裸 K 交易!
  5. Android之PopupWindow弹出对话框
  6. 电子密码锁设计-单片机课程设计
  7. java batik_Java Batik框架画SVG图 JSVGCanvas
  8. 将Linux可执行文件变成可执行命令
  9. python打印日历_Python怎么打印日历?
  10. WebSphere-解决办法:UndefinedVariableException: Undefined variable HOST
  11. 神州数码:我国市民卡发展之路探讨
  12. 马斯克、李彦宏、姚期智等云端纵论AI,他们都说了什么?
  13. linux svn图形工具,linux 下svn图形客户端smartsvn 安装
  14. 感冒发烧都能报?小额医疗险了解下!
  15. 为什么工资高的程序员很少炫富?
  16. HTML语言全称叫超文本标记语言,其中的“标记“如何理解,“超文本”又如何理解?
  17. Linux使用gstreamer打开网络摄像头
  18. swpa软件测试工程师,新版3DMark推出专用测试工具——CPU Profile
  19. Unity3d开发之十五:详解困惑,事件分发和侦听系统(委托实现)
  20. php实现挖掘百度相关词,百度相关搜索关键词采集即长尾关键词挖掘脚本

热门文章

  1. 【docker】Mac下oracle10g下载安装
  2. MaxEnt软件的使用
  3. HTML+CSS美食静态网页设计——简单牛排美食餐饮(9个页面)公司网站模板企业网站实现
  4. CE自动汇编之AOB注入
  5. 我以为自己MySQL够牛逼了,直到被腾讯面试官狠狠抽了两巴掌
  6. Install SysBench support MySQL and PostgreSQL
  7. o在计算机进制中,计算机里的0和1,二进制
  8. 蓝桥杯 Python 练习题 数字游戏
  9. android 很多牛叉界面库github地址
  10. 10月书讯丨10本新书为你充电