官网的说明

torch.bmm(input, mat2, out=None) → Tensor

bmm的输入必须是3维的。其他维度会出错:

import torch
a = torch.Tensor(4,2,2,3)
b = torch.Tensor(4,2,3,5)
c = torch.bmm(a,b)Traceback (most recent call last):File "/Users/XXX/Desktop/MyCode/xxx.py", line 1436, in <module>c = torch.bmm(a,b)
RuntimeError: Expected 3-dimensional tensor, but got 4-dimensional tensor for argument #1 'batch1' (while checking arguments for bmm)

下面我们演示一下bmm的使用:

import torcha = torch.stack( [torch.ones(3,4)*torch.tensor(i+1) for i in range(5)], dim=0)
b = a.transpose(1,2)
#a.shape: (5,3,4)
#b.shape: (5,4,3)c = torch.bmm(a,b)
#c.shape: (5,3,3)
print(c)tensor([[[  4.,   4.,   4.],[  4.,   4.,   4.],[  4.,   4.,   4.]],[[ 16.,  16.,  16.],[ 16.,  16.,  16.],[ 16.,  16.,  16.]],[[ 36.,  36.,  36.],[ 36.,  36.,  36.],[ 36.,  36.,  36.]],[[ 64.,  64.,  64.],[ 64.,  64.,  64.],[ 64.,  64.,  64.]],[[100., 100., 100.],[100., 100., 100.],[100., 100., 100.]]])

代码中我们设置了5个3*4 的tensor stack在一起,其转置相应的是 4*3。
我们的a中的每个都是一个全1到全5的矩阵。我们知道:
I∈Rm∗nI \in R^{m*n}I∈Rm∗n,
I∗IT=n∗I′,I′∈Rm∗mI*I^{T}=n*I',I'\in R^{m*m}I∗IT=n∗I′,I′∈Rm∗m ,
aI∗aIT=n∗a2∗I′aI*aI^T=n*a^2*I'aI∗aIT=n∗a2∗I′
上述的结果正好是a=1,2,3,4,5a=1,2,3,4,5a=1,2,3,4,5的情况,因此,bmm的作用是batch号相同的两个矩阵之间的矩阵乘,不同batch号之间的矩阵无关联!

torch.bmm()验证相关推荐

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

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

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

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

  3. torch.bmm()函数的使用

    torch.bmm()的使用: a=torch.Tensor([[[3,4],[1,2]],[[3,4],[1,2]],[[3,4],[1,2]]]) b=torch.Tensor([[[1,2],[ ...

  4. pytorch 之 torch.bmm()函数

    这是一个计算两个tensor之间乘积的函数,该函数要求两个tensor必须都是三维的,且对两个tensor维度有限制,要求啊a,b两个tensor有如下格式: a:(z,x,y) b:(z,y,c) ...

  5. torch.bmm() 与 torch.matmul()==>张量的相乘运算

    torch.bmm()强制规定维度和大小相同 torch.matmul()没有强制规定维度和大小,可以用利用广播机制进行不同维度的相乘操作 当进行操作的两个tensor都是3D时,两者等同. torc ...

  6. Pytorch教程之torch.mm、torch.bmm、torch.matmul、masked_fill

    文章目录 1.简介 2.torch.mm 3.torch.bmm 4.torch.matmul 5.masked_fill 1.简介 这几天正在看NLP中的注意力机制,代码中涉及到了一些关于张量矩阵乘 ...

  7. torch.bmm()

    文章目录 函数介绍 例子 函数介绍 torch.bmm(input, mat2, *, out=None) → Tensor 输入: input (Tensor) – the first batch ...

  8. torch.bmm()函数解读

    函数作用 计算两个tensor的矩阵乘法,torch.bmm(a,b),tensor a 的size为(b,h,w),tensor b的size为(b,w,m) 也就是说两个tensor的第一维是相等 ...

  9. 【Pytorch】torch. bmm()

    目录 简介 torch.bmm() 语法 作用 举例 参考 结语 简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C+ ...

最新文章

  1. ZH奶酪:Java调用NLPIR汉语分词系统
  2. OVS DPDK--介绍(一)
  3. openresty获取Nginx uri中的单一变量
  4. php怎么样sphinx,php使用sphinx
  5. 【js】vue 2.5.1 源码学习(二) 策略合并
  6. 适用于VS C++环境的注释代码段,可以让你的代码被使用时有高可读性的注释
  7. Nginx应用场景之动静分离
  8. 对VLAN间路由实验的总结
  9. 使用Flash Builder 4.5进行多平台游戏开发
  10. 关于SVN更新时文件加锁的小结
  11. mac安装adb工具
  12. python unpack函数_python的struct.unpack函数
  13. 安装mysql时一直卡在starting the server这一位置,解决办法
  14. 开源PHP微信通用sdk,支持微信支付及所有基础接口(强烈推荐)
  15. HEVC-帧内预测2: initAdiPattern 函数
  16. 年仅28岁的程序员宣布从字节跳动退休,他是如何实现财务自由的?
  17. 微信服务器在哪里修改密码,微信修改密码在哪里 微信在哪里改密码
  18. C++基础入门丨1. 初识C++像极了C语言
  19. python实现Apriori算法
  20. hpuoj 1210: OY问题 [搜索]

热门文章

  1. 【AD系列教程】在PCB中加入任意图形
  2. 《jsp程序设计》智多星手机销售网后台设计
  3. spring源码解析--环境搭建
  4. 25 Three.js的点光源THREE.PointLight
  5. 网易云音乐的歌单推荐算法是怎样的?
  6. 深入JavaWeb技术世界15:通过项目逐步深入了解Mybatis(二)
  7. 73个word使用终极技巧
  8. 技术干货 | 基于 MindSpore 实现图像分割之平均表面距离
  9. 5g通用模组是什么_5G通用模组使能行业数字化转型,中国电信在行动
  10. java编写连接数据库代码