【Pytorch】对比matual,mm和bmm函数
pytorch中提供了 matmul
、mm
和bmm
等矩阵的乘法运算功能,但其具体计算细节和场景截然不同,应予以注意和区别。
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函数相关推荐
- pytorch矩阵乘法mm,bmm
文章目录 矩阵维度 矩阵乘法 torch.mm torch.bmm torch.matmul 矩阵维度 首先需要确认多维矩阵每个维度的对应含义. a = torch.tensor([[[3.], [1 ...
- pytorch matmul和mm和bmm区别
pytorch中matmul和mm和bmm区别 matmul mm bmm 结论 先看下官网上对这三个函数的介绍. matmul mm bmm 顾名思义, 就是两个batch矩阵乘法. 结论 从官方文 ...
- 关于torch.bmm()函数计算过程
很多框架中提供的矩阵乘法都是出于简化计算的考虑,很多情况下在进行计算时候都会牵扯到 batch size 这一个维度,这就使得很多矩阵的计算是三维的,Pytorch中的bmm()函数就可以很方便的实现 ...
- torch.bmm 函数
torch.bmm 函数 这里只是记录一下,为了以后个人方便查找. 具体参考:pytorch官方文档 torch.bmm(input, mat2, *, deterministic=False, ou ...
- Pytorch中tensor.view().permute().contiguous()函数理解
Pytorch中tensor.view().permute().contiguous()函数理解 yolov3中有一行这样的代码,在此记录一下三个函数的含义 # 例子中batch_size为整型,le ...
- Pytorch之torch.nn.functional.pad函数详解
torch.nn.functional.pad是PyTorch内置的矩阵填充函数 (1).torch.nn.functional.pad函数详细描述如下: torch.nn.functional.pa ...
- Pytorch的使用:torch.gather函数
Pytorch的使用:torch.gather函数 **torch.gather()** 作用:方便从批量tensor中获取特定化维度指定索引下的数据,该索引往往是乱序的. 首先看一下官方文档中的3维 ...
- 机器学习9:关于pytorch中的zero_grad()函数
机器学习9:关于pytorch中的zero_grad()函数 本文参考了博客Pytorch 为什么每一轮batch需要设置optimizer.zero_grad. 1.zero_grad()函数的应用 ...
- 【pytorch】torch.mm,torch.bmm以及torch.matmul的使用
torch.mm torch.mm是两个矩阵相乘,即两个二维的张量相乘 如下面的例子 mat1 = torch.randn(2,3) print("mat1=", mat1)mat ...
最新文章
- [GXOI/GZOI2019]旧词——树链剖分+线段树
- 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc
- python编程计算器_python怎么编写计算器程序
- 满屏的指标?删了吧,手把手教你裸 K 交易!
- Android之PopupWindow弹出对话框
- 电子密码锁设计-单片机课程设计
- java batik_Java Batik框架画SVG图 JSVGCanvas
- 将Linux可执行文件变成可执行命令
- python打印日历_Python怎么打印日历?
- WebSphere-解决办法:UndefinedVariableException: Undefined variable HOST
- 神州数码:我国市民卡发展之路探讨
- 马斯克、李彦宏、姚期智等云端纵论AI,他们都说了什么?
- linux svn图形工具,linux 下svn图形客户端smartsvn 安装
- 感冒发烧都能报?小额医疗险了解下!
- 为什么工资高的程序员很少炫富?
- HTML语言全称叫超文本标记语言,其中的“标记“如何理解,“超文本”又如何理解?
- Linux使用gstreamer打开网络摄像头
- swpa软件测试工程师,新版3DMark推出专用测试工具——CPU Profile
- Unity3d开发之十五:详解困惑,事件分发和侦听系统(委托实现)
- php实现挖掘百度相关词,百度相关搜索关键词采集即长尾关键词挖掘脚本