前言

torch中常见的一些矩阵乘法和元素乘积,说白了无非就是以下四种,为了避免忘了,做个笔记

  1. 乘法符号 *
  2. torch.mul()
  3. torch.mm
  4. torch.matmul
  5. torch.dot

1. 对比

  1. 乘法符号*
# shape=(2,5)
node = tensor([[1, 1, 1, 0, 0], [1, 1, 1, 1, 1]])node_0 = node.unsqueeze(-1)
'''
tensor([[[1],[1],[1],[0],[0]],[[1],[1],[1],[1],[1]]], torch.Size([2,1,5]))
'''
node_1 = node.unsqueeze(1)
'''
tensor([[[1, 1, 1, 0, 0]],[[1, 1, 1, 1, 1]]], torch.Size([2,5,1]))
''''True, 值相同'
node_mask.unsqueeze(-1) * node_mask.unsqueeze(1) == /
node_mask.unsqueeze(-1) * node_mask.unsqueeze(1)print(node_mask.unsqueeze(-1) * node_mask.unsqueeze(1))
'shape=[2,5,5]'

所以,乘法符号是对应的tensor和元素乘。

2.torch.mul()

和上面一样,不同是有官方解释

torch.mul(input, value, out=None)

用标量值value乘以输入input的每个元素,并返回一个新的结果张量。 out=tensor∗value

# shape=(2,5)
node = tensor([[1, 1, 1, 0, 0], [1, 1, 1, 1, 1]])
node_0 = node.unsqueeze(-1) # [2,5,1]
node_1 = node.unsqueeze(1) # [2,1,5]
'shape=[2,5,5]'
torch.mul(node_0, node_1) #
'True,看来是相同的'
torch.mul(node_0, node_1) ==  node_mask.unsqueeze(-1) * node_mask.unsqueeze(1)
  1. torch.matmul()和torch.mm()和torch.bmm()
  • 在矩阵的情况下,矩阵就是shape=n×m格式,只能用torch.mm()torch.matmul(),不可以使用torch.bmm()
  • 但是大多数情况都是带有batch_size,也就是sahpe=[batch_size, n, m],只能用torch.matmul()torch.bmm()
# shape=(2,5)
node = tensor([[1, 1, 1, 0, 0], [1, 1, 1, 1, 1]])
node_0 = node.unsqueeze(-1) # [2,5,1]
node_1 = node.unsqueeze(1) # [2,1,5]'先看mm和matmul'
torch.mm(node_mask, node_mask.transpose(0,1)) # [2,2]
torch.matmul(node_mask, node_mask.transpose(0,1)) # [2,2]
# 下面 True
torch.mm(node_mask, node_mask.transpose(0,1)) == /
torch.matmul(node_mask, node_mask.transpose(0,1))# error:  torch.mm()就不可以在这种三维tensor下用
torch.mm(node_0, node_1) # 报错
'而torch.matmul()'
torch.matmul(node_0, node_1)'看高维Tensor'
torch.matmul(node_0, node_1) # --> [2,1,1]
torch.bmm(node_0, node_1) # --> [2,1,1]
torch.bmm(node_mask.unsqueeze(1), node_mask.unsqueeze(-1)) # --> [2,1,1]'True'
torch.matmul(node_0, node_1) == torch.bmm(node_0, node_1)

注意:dot很快运算速度远超于matmul

torch中的乘法符号(*),torch.mm()和torch.matmul(),torch.mul(), torch.bmm()相关推荐

  1. matlab中de 乘法符号,MATLAB中的*(乘)和.*(点乘)傻傻分不清?!

    MATLAB中点乘和乘的运算 0. 问题场景 最近,学校开始有MATLAB计算的课开课啦.很多小朋友都来问我为什么他们的程序无缘无故报错,答案基本都是没有分清*和.*.那么我这里就来讲一讲这俩运算的区 ...

  2. matlab中de 乘法符号,FPGA 中的有符号数乘法

    FPGA中乘法器是很稀缺的资源,但也是我们做算法必不可少的资源.7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我们可以通过调IP Core的方式或者原语的方式来进行 ...

  3. 【增强学习】Torch中的增强学习层

    要想在Torch框架下解决计算机视觉中的增强学习问题(例如Visual Attention),可以使用Nicholas Leonard提供的dpnn包.这个包对Torch中原有nn包进行了强大的扩展, ...

  4. torch中乘法整理,*torch.mul()torch.mv()torch.mm()torch.dot()@torch.mutmal()

    目录 *位置乘 torch.mul():数乘 torch.mv():矩阵向量乘法 torch.mm() 矩阵乘法 torch.dot() 点乘积 @操作 torch.matmul() *位置乘 符号* ...

  5. Torch中的矩阵相乘分类

    矩阵相乘在torch中的几种情况 1.矩阵逐元素(Element-wise)乘法 torch.mul(mat1, other) mat和other可以是标量也可以是任意维度的矩阵,只要满足最终相乘是可 ...

  6. torch中的spmm

    系列文章目录 本系列记录自己的代码学习知识 torch.matmul的前后两个矩阵维度不同的小结 torch中的transpose和view的不同 torch中的spmm 系列文章目录 前言 一.to ...

  7. Torch 中添加自己的 nn Modules:以添加 Dropout、 Triplet Loss 为例

    Preface 因为要复现前面阅读的一篇论文:<论文笔记:Deep Relative Distance Learning: Tell the Difference Between Similar ...

  8. torch中的copy()和clone()

    torch中的copy()和clone() 1.torch中的copy()和clone() y = torch.Tensor(2,2):copy(x) --- 1 修改y并不改变原来的x y = x: ...

  9. torch中的topk()函数

    torch中的topk()函数 In [2]: import torchIn [3]: a=torch.randn((4,6))In [4]: a Out

最新文章

  1. Spring Boot集成Swagger导入YApi@无界编程
  2. 关于Git中的一些常用的命令
  3. 关于bat的变量赋值和解析机制
  4. hdu 5434(状态压缩+矩阵优化)
  5. 【实操】深度学习网络万万千,到底怎么把我的数据放进去?
  6. wxWidgets:wxPGMultiButton类用法
  7. Fluent NHibernate之旅
  8. MySQL中有exists关键字吗_Mysql中EXISTS关键字用法、总结
  9. c语言小游戏 贴吧,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  10. jms.jar 2.0_JMS API 1.1生产者和使用者
  11. 软件工程课程设计药品信息管理系统*
  12. matlab中换行操作
  13. Unity3D——打飞碟游戏(2)
  14. 设计模式|职责链模式--流程状态审批(枚举实现)
  15. 怪文書 / Dubious Document
  16. Android中RemoteViews的实现
  17. 用Python语言模型和LSTM做一个Drake饶舌歌词生成器!自己蒙了!
  18. java4android网易云,Android仿网易云音乐播放界面
  19. 哈希切割+布隆过滤器
  20. 朴素贝叶斯、费舍尔分类方法

热门文章

  1. html怎么渲染富文本,渲染-如何使项目视图在Q中渲染富文本(html)
  2. mysql objectid_MongoDB ObjectId详解及使用
  3. 2020高考河北对口计算机查分,河北省教育考试院官网2020高考查分:成绩查询入口...
  4. 薇美姿赴港上市:从小本生意做到“国货牙膏第一股”
  5. 8*8led矩阵的滚动广告幕的c语言程序,8*8LED矩阵滚动显示数字和字符
  6. Android O Working With Fonts
  7. Ubuntu18.04卸载显卡driver历险记(六十九)
  8. 基于RisParity+BlackLitterman的因子择时
  9. 带着新人学springboot的应用10(springboot+定时任务+发邮件)
  10. css文本溢出隐藏显示省略号