文章目录

  • 点乘 `torch.mul(a,b)`
  • 二维矩阵乘 `torch.mm(a,b)`
  • 三维矩阵乘 `torch.bmm(`a,b)
  • 高维矩阵乘 `torch.matmul(a,b)`

点乘 torch.mul(a,b)

点乘是对应位置元素相乘
点乘都是broadcast的,可以用torch.mul(a, b)实现,也可以直接用*实现。

python中的广播机制(broadcasting)
broadcasting可以这样理解:如果你有一个(m,n)的矩阵,让它加减乘除一个(1,n)的矩阵,它会被复制m次,成为一个(m,n)的矩阵,然后再逐元素地进行加减乘除操作。同样地对(m,1)的矩阵成立

图源:https://www.jianshu.com/p/fadd169cd396

  • 当a, b维度满足广播机制时,会自动填充到相同维度相点乘。
    例如:a的维度为(2,3),b的维度为(1,3);
    或者:a的维度为(2,3),b的维度为(2,1)。
  • 当a, b维度不满足广播机制时,要求a和b的维度必须相等。
    a的维度为(1,2),b的维度为(2,3)就会报错:The size of tensor a (2) must match the size of tensor b (3) at non-singleton dimension 1
    报错的意思是b中维度为3的位置必须和a中维度为2的位置相匹配,因为a中有个维度1,要想满足广播机制就必须是(1,2)和(2,2),否则就需要满足维度必须相等(2,3)和(2,3)

二维矩阵乘 torch.mm(a,b)

torch.mm(mat1, mat2, out=None)


二维矩阵乘法要求a、b两个参数的维度要满足乘法要求。
该函数一般只用来计算两个二维矩阵的矩阵乘法,并且不支持broadcast操作。

三维矩阵乘 torch.bmm(a,b)

由于神经网络训练一般采用mini-batch,经常输入的时三维带batch的矩阵,所以提供

torch.bmm(bmat1, bmat2, out=None)


该函数的两个输入必须是三维矩阵并且第一维相同(表示Batch维度), 后两维符合矩阵乘法要求。不支持broadcast操作

高维矩阵乘 torch.matmul(a,b)

torch.matmul(input, other, out=None)

高维矩阵的最后两维满足矩阵乘法要求,前面维数认为是batch_size, 使用广播机制。

主要参考资料:
pytorch之torch中的几种乘法
pytorch 中矩阵乘法总结

pytorch矩阵乘法总结相关推荐

  1. [PyTorch] 矩阵乘法

    参考 『PyTorch』矩阵乘法总结 1. * 两个张量在对应的位置上进行数值相乘. x = torch.randn(2, 2) y = x * x 2. torch.mm() 二维矩阵乘法 x = ...

  2. pytorch矩阵乘法mm,bmm

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

  3. Pytorch矩阵乘法之torch.mul() 、 torch.mm() 及torch.matmul()的区别

    torch.mul() . torch.mm() 及torch.matmul()的区别 一.简介 torch.mul(a, b) 是矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2 ...

  4. pytorch 内积 矩阵乘法

    1维张量内积-torch.dot() 内积返回的是一个值,如果都归一化了,可以看做相似度. torch.dot(input, tensor) → Tensor #计算两个张量的点积(内积) #官方提示 ...

  5. Pytorch:矩阵乘法总结

    1.矩阵相乘 (1)二维矩阵乘法:torch.mm(mat1, mat2, out=None) → Tensor 该函数一般只用来计算两个二维矩阵的矩阵乘法,并且不支持broadcast操作. 代码例 ...

  6. pytorch 矩阵和向量乘法

    向量 点乘:又叫做点积.内积.数量积.标量积,向量a[a1,a2,...,an]和向量b[b1,b2b...,bn]点乘的结果是一个标量,记作a.b: 得到一个值. 叉乘:又叫向量积.外积.叉积,叉乘 ...

  7. numpy 矩阵乘法_一起学习Python常用模块——numpy

    关注微信公众号:一个数据人的自留地 作者介绍 知乎@王多鱼 百度的一名推荐算法攻城狮. 主要负责商品推荐的召回和排序模型的优化工作. 1 前言 Python在数据科学.机器学习.AI领等域中占据主导地 ...

  8. 矩阵乘法,矩阵中各元素对应相乘及其梯度计算;

    矩阵乘法:x=([x1,x2]) w=([w1,w2],[w3,w4]) torch.matmul(x,w)=([x1w1+x2w3,x1w2+x2+w4]) x.grad=(w1+w2,w3+w4) ...

  9. pytoch矩阵乘法torch.bmm

    torch.bmm函数可实现矩阵乘法.pytorch官方文档地址:torch.bmm - PyTorch 1.10.1 documentationhttps://pytorch.org/docs/st ...

最新文章

  1. html转换pdf 分页,(html2canvas jspdf)html转pdf带分页
  2. 下面哪个字段是http请求中必须具备的_HTTP协议及其工作原理介绍
  3. Python自然语言处理学习笔记(66):7.7 小结
  4. WindowsPhone设置启动欢迎页面
  5. 字符串数组 和 字符串指针 的区别
  6. SSClone非ARP会话劫持原理分析
  7. 迭代器(Iterator)遍历的两种方法(for和while)
  8. 使用Spring Security添加RememberMe身份验证
  9. JavaScript代码优化实战之一:缓存变量,关键字过滤
  10. 在Ubuntu 18.04系统上安装和配置DBeaver的步骤
  11. 【万字长文】创业公司就应该技术选型 Spring Cloud Alibaba , 开箱即用
  12. JavaScript异步编程【中】 -- Promise 详细解析
  13. 如何在自己的程序里执行/终止一个外部程序?
  14. python支持向量机回归_支持向量机——核函数与支持向量回归(附Python代码)
  15. xshell上传本地文件命令_linux redhat怎么用xshell上传本地文件
  16. linux系统日志message 分析,Linux系统日志及日志分析
  17. java sdk qq登录授权,springboot开发qq第三方授权登录(示例代码)
  18. 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
  19. Pygame库200行代码实现简易飞机大战的小游戏
  20. 《软件工程实践》第五次作业-WordCount进阶需求 (结对第二次)

热门文章

  1. vector容器 常用函数
  2. linux-vim批量注释与解注释操作
  3. vim 实现批量注释
  4. sscanf 解析字符串
  5. C#上位机的USB通信与串口通信接口区别
  6. 专访腾讯方亮:WeTest品牌全面升级,“好的产品一定深谙人性”
  7. 【操作教程】高清视频编码器怎么连接配置网络?
  8. seata 1.3.0 四种模式解决分布式事务(AT、TCC、SAGA、XA)
  9. RAID10和RAID01区别
  10. Wrod2vec算法实战_3分钟热情学NLP第5篇