文章目录

  • 1、torch.mul()
  • 2、torch.mm()
  • 3、torch.matmul()
    • 3.1 输入都是二维
    • 3.2 输入都是三维
    • 3.3 输入的维度不同

1、torch.mul()

  • torch.mul(a, b)是矩阵a和b对应位相乘
  • torch.mul(a, b)中a和b的维度相等,但是,对应维度上的数字可以不同,可以用利用广播机制扩展到相同的形状,再进行点乘操作
# 比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵
>>> a = torch.rand(1, 2)
>>> b = torch.rand(1, 2)
>>> torch.mul(a, b)  # 返回 1*2 的tensor# 乘列向量
>>> a = torch.ones(3,4)
>>> a
tensor([[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]])
>>> b = torch.Tensor([1,2,3]).reshape((3,1))
>>> b
tensor([[1.],[2.],[3.]])
>>> torch.mul(a, b)
tensor([[1., 1., 1., 1.],[2., 2., 2., 2.],[3., 3., 3., 3.]])

2、torch.mm()

  • torch.mm(a, b)是矩阵a和b矩阵相乘,比如a的维度是(3, 4),b的维度是(4, 2),返回的就是(3, 2)的矩阵torch.mm(a, b)针对二维矩阵
>>> a = torch.ones(3,4)
>>> b = torch.ones(4,2)
>>> torch.mm(a, b)
tensor([[4., 4.],[4., 4.],[4., 4.]])

mm()是mutmul()的简称?

3、torch.matmul()

  • torch.matmul(a, b)也是一种类似于矩阵相乘操作的tensor联乘操作,一般是高维矩阵a和b相乘,但是它可以利用python 中的广播机制,处理一些维度不同的tensor结构进行相乘操作。

3.1 输入都是二维

  • 当输入都是二维时,就是普通的矩阵乘法,和tensor.mm()函数用法相同。

3.2 输入都是三维

  • 下面看一个两个都是3维的例子:

    将b的第0维1broadcast成2提出来,后两维做矩阵乘法即可。

3.3 输入的维度不同

  • 当输入有多维时,把多出的一维作为batch提出来,其他部分做矩阵乘法。
  • 再看一个复杂一点的,是官网的例子:

    首先把a的第0维2作为batch提出来,则a和b都可看作三维。再把a的1broadcat成5,提取公因式5。(这样说虽然不严谨,但是便于理解。)然后a剩下(3,4),b剩下(4,2),做矩阵乘法得到(3,2)。

参考:https://www.jianshu.com/p/e277f7fc67b3
参考:https://blog.csdn.net/qsmx666/article/details/105783610

pytorch函数mm() mul() matmul()区别相关推荐

  1. pytorch中torch.mul、torch.mm/torch.bmm、torch.matmul的区别

    预备知识:矩阵的各种乘积 三者对比 torch.mul: 两个输入按元素相乘,内积 分两种情况,默认其中一个是tensor 另一个也是tensor,那么两者就要符合broadcasedt的规则 另一个 ...

  2. 【Pytorch学习】torch.mm()torch.matmul()和torch.mul()以及torch.spmm()

    目录 1 引言 2 torch.mul(a, b) 3 torch.mm(a, b) 4 torch.matmul() 5 torch.spmm() 参考文献 1 引言   做深度学习过程中免不了使用 ...

  3. pytorch matmul和mm和bmm区别

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

  4. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  5. oracle创建函数和调用存储过程和调用函数的例子(区别)

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  6. pytorch 函数clamp

    pytorch 函数clamp clamp表示夹紧,夹住的意思,torch.clamp(input,min,max,out=None)-> Tensor 将input中的元素限制在[min,ma ...

  7. C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别

    C++ 在继承中虚函数.纯虚函数.普通函数,三者的区别 1.虚函数(impure virtual) C++的虚函数主要作用是"运行时多态",父类中提供虚函数的实现,为子类提供默认的 ...

  8. python中函数和方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析. (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函 ...

  9. Django 函数和方法的区别

    函数和方法的区别 1.函数要手动传self,方法不用传 2.如果是一个函数,用类名去调用,如果是一个方法,用对象去调用 ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662 ...

最新文章

  1. PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles
  2. html5-Canvas绘图
  3. 【Linux】35. python脚本重命名各子目录下的图片
  4. 在sql2005中加数据库时出现无法打开物理文件
  5. java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上
  6. JS——try catch throw
  7. 2013计算机二级试题,2013年3月全国计算机二级VFP真题
  8. javaSE基础知识 知识点(一)
  9. JDK ThreadLocal解析
  10. 第十二届蓝桥杯 杨辉三角形 Python题解 满分
  11. 两个很棒的爬虫智能解析库,通配大部分网页!
  12. MATLAB随机数的应用ppt,Matlab生成随机数.ppt
  13. C语言 - MISRA代码规范
  14. 股票 - - 常用指标【上】
  15. 职高的计算机平面设计一般学什么,职高形象设计学什么
  16. C++学习int main()函数
  17. 为什么医疗行业需要完整的API管理系统?
  18. 使用shape绘制阴影图层阴影效果
  19. 安徽省软考报名时间成绩查询安徽省教育考试院安徽省人事考试网报名入口
  20. Android OpenCV 身份证识别实战

热门文章

  1. 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码
  2. 有符号数和无符号数之间的转换
  3. 企业微信 jssdk调用 扫一扫 安卓不行 ios又可以
  4. C++语言程序设计第五版 - 郑莉(第五章课后习题)
  5. “夜游+”可为文旅带来哪些发展?深圳光语数字
  6. (附源码)计算机毕业设计ssm二手图书回收销售网站
  7. 影响世界的儿童冒险动画:《丁丁历险记》 The Adventure of Tintin
  8. “SISTERS姐妹”双个展在南京W艺术空间举办
  9. 如何理解“当前逾期期数”、“累计逾期次数”与“最高逾期期数”?
  10. 持续使用KimJongRAT和PCRat发动攻击:BabyShark恶意软件分析