torch.matmul()的用法

这篇文章记录torch.matmul()的用法
在这里插入图片描述
这里仿照官方文档中的例子说明,此处取整数随机数,用于直观的查看效果:

  • vector x vector
    两个一维向量的matmul相当于点积,得到一个标量
tensor1 = torch.randint(1, 6, (3,))
tensor2 = torch.randint(1, 6, (3,))
output = torch.matmul(tensor1, tensor2)
print("tensor1: {}".format(tensor1))
print("tensor2: {}".format(tensor2))
print("output: {}".format(output))
print("output_size: {}".format(output.size()))
tensor1: tensor([5, 1, 1])
tensor2: tensor([3, 1, 2])
output: 18
output_size: torch.Size([])
  • matrix x vector
    一个二维张量和一个一维张量的乘积,是把多出的一维提出来,相当于沿那个维度分别点积
tensor1 = torch.randint(1, 6, (3, 4))
tensor2 = torch.randint(1, 6, (4,))
output = torch.matmul(tensor1, tensor2)
print("tensor1: {}".format(tensor1))
print("tensor2: {}".format(tensor2))
print("output: {}".format(output))
print("output_size: {}".format(output.size()))
tensor1: tensor([[5, 1, 5, 1],
        [4, 4, 4, 2],
        [2, 4, 4, 1]])
tensor2: tensor([1, 3, 4, 3])
output: tensor([31, 38, 33])
output_size: torch.Size([3])
  • batched matrix x broadcasted vector
    一个批量矩阵也就是三维张量和一个一维广播向量的乘积,把多出的两维都提出来,沿这两维分别点积
tensor1 = torch.randint(1, 3, (2, 3, 4))
tensor2 = torch.randint(1, 3, (4,))
output = torch.matmul(tensor1, tensor2)
print("tensor1: {}".format(tensor1))
print("tensor2: {}".format(tensor2))
print("output: {}".format(output))
print("output_size: {}".format(output.size()))
tensor1: tensor([[[1, 2, 2, 2],
         [2, 2, 2, 2],
         [2, 2, 1, 2]],

        [[1, 2, 1, 1],
         [2, 1, 1, 1],
         [2, 2, 2, 2]]])
tensor2: tensor([2, 2, 1, 2])
output: tensor([[12, 14, 13],
        [ 9,  9, 14]])
output_size: torch.Size([2, 3])
  • batched matrix x batched matrix
    批量矩阵三维和三维的乘积,把公共的维度提出来,然后二维矩阵分别乘积
tensor1 = torch.randint(1, 3, (2, 3, 4))
tensor2 = torch.randint(1, 3, (2, 4, 5))
output = torch.matmul(tensor1, tensor2)
print("tensor1: {}".format(tensor1))
print("tensor2: {}".format(tensor2))
print("output: {}".format(output))
print("output_size: {}".format(output.size()))
tensor1: tensor([[[2, 2, 2, 1],
         [2, 2, 2, 2],
         [2, 1, 1, 2]],

        [[1, 2, 2, 1],
         [1, 1, 1, 1],
         [2, 1, 2, 1]]])
tensor2: tensor([[[1, 1, 1, 1, 2],
         [2, 1, 1, 2, 1],
         [2, 1, 1, 2, 1],
         [1, 1, 1, 1, 1]],

        [[1, 2, 2, 2, 2],
         [2, 1, 1, 1, 1],
         [1, 2, 1, 1, 1],
         [1, 1, 1, 2, 2]]])
output: tensor([[[11,  7,  7, 11,  9],
         [12,  8,  8, 12, 10],
         [ 8,  6,  6,  8,  8]],

        [[ 8,  9,  7,  8,  8],
         [ 5,  6,  5,  6,  6],
         [ 7, 10,  8,  9,  9]]])
output_size: torch.Size([2, 3, 5])
  • batched matrix x broadcasted matrix
    批量矩阵三维和广播矩阵二维,多出来的一维提出来,二维矩阵乘积
tensor1 = torch.randint(1, 3, (2, 3, 4))
tensor2 = torch.randint(1, 3, (4, 5))
output = torch.matmul(tensor1, tensor2)
print("tensor1: {}".format(tensor1))
print("tensor2: {}".format(tensor2))
print("output: {}".format(output))
print("output_size: {}".format(output.size()))
tensor1: tensor([[[2, 1, 2, 1],
         [1, 1, 2, 1],
         [1, 2, 1, 2]],

        [[1, 1, 1, 2],
         [1, 2, 2, 1],
         [1, 1, 2, 2]]])
tensor2: tensor([[2, 1, 1, 1, 1],
        [2, 1, 1, 2, 2],
        [1, 1, 1, 1, 1],
        [1, 2, 2, 1, 1]])
output: tensor([[[9, 7, 7, 7, 7],
         [7, 6, 6, 6, 6],
         [9, 8, 8, 8, 8]],

        [[7, 7, 7, 6, 6],
         [9, 7, 7, 8, 8],
         [8, 8, 8, 7, 7]]])
output_size: torch.Size([2, 3, 5])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/656297.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW通过以太网控制PLC程序开发

在使用LabVIEW通过以太网控制PLC程序开发时,需要综合考虑硬件、软件和通信协议的协调工作。以下是详细步骤、注意事项、重点和难点分析,以及几种实现方式及其特点的概述。 实现步骤 确定硬件和软件环境: 确定PLC型号和品牌(如西门…

错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。

全网唯一解决此BUG的文章!!! 你是否碰到了以下几种问题?先说原因解决思路具体操作1、首先将你C:\Windows\Microsoft.NET\文件夹的所有者修改为你当前用户,我的是administrator。2、修改当前用户权限。3、重启电脑4、删…

你什么时候感觉学明白Java了?

学是学不明白Java的,要学明白Java,一定只能在工作以后。 1 在学习阶段,哪怕是借鉴别人的学习路线,其实依然会学很多不必要的技能,比如jsp,swing,或者多线程,或者设计模式。 2 或者…

业内宝刊!影响因子3连涨,OA可选,Elsevier旗下这本SSCI解救你的选刊纠结症

【SciencePub学术】今天小编给大家带来了一本经济类的高分优刊解读,隶属于Elsevier出版社,JCR1区,中科院2区,影响因子高达4.8,且实时影响因子还在持续上涨中,领域相符的学者可着重考虑! Emergin…

微服务架构五大设计模式详解,助你领跑行业

微服务架构设计模式详解(5种主流模式) 微服务架构 微服务,一种革命性的架构模式,主张将大型应用分解为若干小服务,通过轻量级通信机制互联。每个服务专注特定业务,具备独立部署能力,轻松融入生产环境,为系…

你对仲裁裁决不服怎么办?我教你四个狠招!

你对仲裁裁决不服怎么办?我教你四个狠招! 这个标题是什么意思呢?也就是说,当你(或用人单位)向劳动仲裁委提出仲裁申请后,但劳动仲裁结果没有维护你的权益,或者你不满意,…

js 面试题学习笔记一

1、什么是防抖和节流?有什么区别?如何实现? 防抖:触发高频事件后N秒内函数只会执行一次,如果N秒高频事件再次被触发,则重新计算时间。(a时间触发,5秒内执行一次,但是第4…

探索Solana链上DApp开发:高性能区块链生态的新机遇

Solana 是一个新兴的区块链平台,致力于为 DApp(去中心化应用程序)开发者提供高性能、低成本的解决方案。Solana 的独特之处在于其创新性的共识机制和高吞吐量的网络,使得开发者可以构建高度可扩展的 DApp,并为用户提供…

企业营收分析难?搞定收入认领月底不加班!

在当今日益激烈的市场竞争中,企业的营收分析不仅是衡量经营成果的关键指标,更是指导企业未来发展的重要依据。然而,对于许多企业来说,营收分析的过程往往繁琐且耗时,尤其是月底结账时,大量的数据和复杂的计…

鸿蒙OS开发:典型页面场景【一次开发,多端部署】(信息应用)案例

信息应用 简介 内容介绍 Mms应用是OpenHarmony中预置的系统应用,主要的功能包含信息查看、发送短信、接收短信、短信送达报告、删除短信等功能。 架构图 目录 /Mms/ ├── doc # 资料 ├── entry │ └── src │…

【STM32嵌入式系统设计与开发---传感器拓展】——1_2_蓝牙主从模块_AT配置(HC-05)

一、主机蓝牙设置 # 1、重置模块 ATORGL # 2、设置名字,自己随便设置 ATNAMEMaster # 3、设置连接密码,要和从机一样,密码好像可以不加双引号 ATPSWD"1234" # 4、设置为主机 ROLE 1 为主机 ROLE 0为从机 ATROLE1 # 5、设置波特…

编码规范

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 下面给出两段实现同样功能的代码,如图10所示。 图10 两段功能相同的Python代码 图10中右侧的代码段看上去比左侧的代码段更加规整&…

【从零开始学习RabbitMQ | 第三篇】什么是延迟消息

目录 前言: 延迟消息: 延迟消息实现方式: 死信交换机: 延迟消息插件: 1.基于注解的方式 2.基于Bean的方式 总结: 前言: 在现代软件开发中,异步消息处理已成为构建可扩展、高可…

【前端学习笔记】HTML基础

HTML 一、HTML介绍1.HTML概念2.文档声明3.字符编码4. HTML标签5. HTML属性 二、标签1.meta标签2.语义标签3.布局标签4.列表5.超链接6.图片7.字符实体8.内联格式9.HTML 表格10.HTML 表单 三、HTML5新特性1. 本地存储2. Cookie3. 语义化标签4.多媒体元素5.表单增强6.Canvas7.SVG …

C++牛客周赛43题目分享(3)小红平分糖果,小红的完全平方数,小苯的字符串变化,小红的子数组排列判断

目录 ​编辑 1.前言 2.四道题目 2.1小红平分糖果 2.1.1题目描述 2.1.2输入描述 2.1.3输出描述 2.1.4示例 2.1.5代码 2.2小红的完全平方数 2.1.1题目描述 2.1.2输入描述 2.1.3输出描述 2.1.4示例 2.1.5代码 2.3小苯的字符串变化 2.1.1题目描述 2.1.2输入描述 …

基于51单片机简易温度计

一.硬件方案 本系统利用51单片机控制温度传感器DS18B20进行温度的实时检测并显示,能够实现快速测量环境温度。硬件以微控制器为核心,外接时钟电路、复位电路、温度测量电路、LED显示电路组成。 二.设计功能 (1)采用DS18B20温度…

如何将照片从 iPhone 传输到闪存驱动器【无质量损坏】

概括 人们喜欢用 iPhone 拍照,因为照片通常都很漂亮,这都要归功于 iPhone 令人惊叹的技术。但照片更新后会占用更多空间,并且您可能会开始收到没有存储空间的通知。因此,您可以将照片传输到 USB 驱动器,然后从 iPhone…

Broker的主从架构

为了保证MQ的数据不丢失而且具备一定的高可用性,所以一般都是得将Broker部署成Master-Slave模式的,也就是—个Master Broker对应一个Slave Broker Master需要在接收到消息之后,将数据同步给Slave,这样一旦Master Broker挂了&#…

嵌入式智能硬件茶杯垫的设计与实现方案

iCupBox简介 这是一款智能杯垫产品,基于GTD时间管理理念设计,目的是提醒人们专心工作和及时喝水休息,提高工作效率。 https://gitee.com/jiangtao008/iCupBox 开原许可协议:MIT 项目分为客户端APP和杯垫固件系统: 客户端APP,使用QML开发,集成GTD时间管理方法,与杯垫固…

芯片固定uv胶有什么优点?

芯片固定uv胶有什么优点? 芯片固定UV胶具有多种优点,这些优点使得它在半导体封装和芯片固定等应用中成为理想的选择。以下是芯片固定UV胶的一些主要优点: 固化速度快:UV胶在紫外线照射下能迅速固化,通常在几秒到几十秒…