当前位置: 首页 > news >正文

[Pytorch]:PyTorch中张量乘法大全

在 PyTorch 中,有多种方法可以执行张量之间的乘法。这里列出了一些常见的乘法操作:

总结:

  • 逐元素乘法:*ortorch.mul()
  • 矩阵乘法@ortorch.mm()ortorch.matmul()
  • 点积torch.Tensor.dot()
  • 批量矩阵乘法torch.bmm()torch.matmul()
  • 矩阵与向量相乘torch.mv(X, w0)
  1. 逐元素乘法(Element-wise multiplication):*ortorch.mul()()`对应位置的元素相乘,输入张量形状必须相同或可广播

    import torchA = torch.tensor([[1, 2], [3, 4]])
    B = torch.tensor([[2, 3], [4, 5]])result = A * B
    print(result)
    

    输出:

    tensor([[ 2,  6],[12, 20]])
    
  2. 矩阵乘法@ortorch.mm()ortorch.matmul()两个矩阵相乘,第一个矩阵的列数必须等于第二个矩阵的行数。

    import torchA = torch.tensor([[1, 2], [3, 4]])
    B = torch.tensor([[2, 3], [4, 5]])result = torch.matmul(A, B)
    print(result)
    

    输出:

    tensor([[10, 13],[22, 29]])
    

    或者使用 @ 运算符执行矩阵乘法:

    result = A @ B
    print(result)
    
  3. 点积(Dot product):torch.Tensor.dot()两个一维张量的点积。

    import torchA = torch.tensor([1, 2, 3])
    B = torch.tensor([4, 5, 6])result = torch.dot(A, B)
    print(result)
    

    输出:

    tensor(32)
    
  4. 批量矩阵乘法:对于具有更高维度的张量(点积),可以使用 torch.bmm()torch.matmul() 进行批量矩阵乘法。

    import torchA = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
    B = torch.tensor([[[2, 3], [4, 5]], [[6, 7], [8, 9]]])result = torch.bmm(A, B)
    print(result)
    

    输出:

    tensor([[[ 10,  13],[ 22,  29]],[[ 76,  91],[112, 133]]])
    

​ 两个输入张量的 batch_size 必须相同。此外,第一个输入张量的 num_columns 必须与第二个输入张量的 num_rows 相同。换句话说,输入张量的形状应为 (batch_size, num_rows_A, num_columns_A)(batch_size, num_columns_A, num_columns_B)

  1. 矩阵与向量相乘torch.mv(X, w0)第一个参数是矩阵,第二个参数只能是一维向量,等价于X乘以w0的转置

相关文章:

  • 从零开始学RSA:N不互素
  • 【科研笔记】知识星球不可选择内容爬虫
  • QT中的文件操作QFile、QDataStream、QTextStream、QBuffer
  • Postman和Python Request测试多行Form-data
  • Android 全局配置Gradle依赖及插件仓库
  • Transformer - Outputs(Shifted Right)
  • typdef:深入理解C语言中typdef关键词的用法
  • uniapp切换中英文
  • Linux下docker运行python
  • uniApp使用uview对vuex的二次封装实现全局变量
  • 【Spring Boot 源码学习】ConditionEvaluationReport 日志记录上下文初始化器
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • 【ZZULIOJ】1030: 判断直角三角形(Java)
  • easyexcel-获取文件资源和导入导出excel
  • Unity进阶之路(2)UI Toolkit
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • bootstrap创建登录注册页面
  • crontab执行失败的多种原因
  • css布局,左右固定中间自适应实现
  • DOM的那些事
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • java8-模拟hadoop
  • log4j2输出到kafka
  • markdown编辑器简评
  • PHP变量
  • Redux系列x:源码分析
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 前端_面试
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 项目管理碎碎念系列之一:干系人管理
  • 1.Ext JS 建立web开发工程
  • Spring第一个helloWorld
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #NOIP 2014#Day.2 T3 解方程
  • (BFS)hdoj2377-Bus Pass
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (待修改)PyG安装步骤
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (黑马C++)L06 重载与继承
  • (离散数学)逻辑连接词
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)模仿学习-完成后台管理页面查询
  • (一)appium-desktop定位元素原理
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net refrector
  • .Net 路由处理厉害了
  • .net 验证控件和javaScript的冲突问题
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理