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])

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习基础笔记

周志华老师的机器学习初步的笔记 绪论 知识分类 科学 是什么,为什么 技术 怎么做 工程 多快好省 应用 口诀,技巧,实际复杂环境,行行出状元 定义 经典定义 利用经验改善系统自身的性能 训练数据 模型 学习算法 分类 决策树…

Django5+React18前后端分离开发实战14 React-Router6 入门教程

使用nodejs18 首先,将nodejs切换到18版本: nvm use 18创建项目 npm create vitelatest zdpreact_basic_router_dev -- --template react cd zdpreact_basic_router_dev npm install react-router-dom localforage match-sorter sort-by npm run dev此…

nlohmann json C++ 解析

学习材料:nlohmann json json官方 源码解析 源码 要学习并理解这份代码,可以按照以下步骤进行,逐步梳理代码的逻辑: 基本步骤: 配置宏: 理解用于配置的宏定义,这些宏控制库的不同特性和行为。例如&…

Java-常见面试题收集(十五)

二十四 Elasticsearch 1 Elasticsearch 的倒排索引 传统的检索方式是通过文章,逐个遍历找到对应关键词的位置。 倒排索引,是通过分词策略,形成了词和文章的映射关系表,也称倒排表,这种词典 映射表即为倒排索引。 其中…

印度政策变革下,中国跨国企业如何应对?一家高科技企业的数据本地化之路

自2001年底印度加入世贸组织以来,印度政府一直积极采取措施促进经济的发展,推出相关政策吸引外资并调整产业结构,以推动经济实现跨越式增长。外资纷纷涌入印度,在各地建立大规模的企业,促使印度成为全球工厂之一&#…

回答网友问题:在C# 中调用非托管DLL

在一个QQ群里,有人在问如何“在C# 中调用非托管DLL”。 俺脑子抽抽了一下,就回了一句“你喜欢用那种声明方式,就用那种方式去调用。” 然后就有人说:“参数声明要和DLL的声明完全一致”。 俺脑子又抽抽了一下,又回了…

图论中的两种递推计数法

递推计数法 生成树计数: τ ( G ) τ ( G − e ) τ ( G ⋅ e ) \tau(G) \tau(G-e)\tau(G\cdot e) τ(G)τ(G−e)τ(G⋅e) G的生成树的颗数,可以分为两类:包含边e的为 τ ( G ⋅ e ) \tau(G\cdot e) τ(G⋅e),不包含边e的为 …

kafka跨地区跨集群同步工具MirrorMaker2 —— 筑梦之路

MM2简介 KIP-382: MirrorMaker 2.0 - Apache Kafka - Apache Software Foundation 有四种运行MM2的方法: As a dedicated MirrorMaker cluster.(作为专用的MirrorMaker群集) As a Connector in a distributed Connect cluster.&#xff08…

每日一练 - 揭秘高级ACL的奥秘

01 真题题目 以下关于高级 ACL 描述正确的是: A.高级 ACL 支持基于协议类型过滤报文 B.可以过滤的协议号的取值可以是 1-255 C.编号范围 3000-3999 D.可以定义生效时间 E.可以根据 MAC 地址过滤报文 02 真题答案 ABCD 03 答案解析 A. 正确:高级ACL的…

使用IDEA远程debug调试

文章目录 应用背景开启方式IDEA设置启动脚本改造 参考资料 应用背景 springboot项目,部署到服务器上,需要开启远程debug跟踪代码。 使用idea开启远程debug。 开启方式 IDEA设置 选择 Edit Configuration 如图,点击加号,选择Re…

【机器学习】利用机器学习优化陆军战术决策与战场态势感知

🔒文章目录: 💥1.引言 🛴2.机器学习在陆军战术决策中的应用 🛣️2.1数据收集与预处理 🌄2.2模型构建与训练: 🌅2.3实时决策支持: 🌅2.4代码实现 &…

力扣:454. 四数相加 II

454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff…

排序算法——上

一、冒泡排序&#xff1a; 1、冒泡排序算法的思想 我们从左边开始把相邻的两个数两两做比较&#xff0c;当一个元素大于右侧与它相邻的元素时&#xff0c;交换它们之间位置&#xff1b;反之&#xff0c;它们之间的位置不发生变化。冒泡排序是一种稳定的排序算法。 2、代码实现…

5月20日分割等和子集+最后一块石头的重量Ⅱ

416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和…

【ai】LiveKit Agent 的example及python本地开发模式工程实例

title: ‘LiveKit Agent Playground’ playgroundLiveKit Community playground的环境变量&#xff1a;LiveKit API # LiveKit API Configuration LIVEKIT_API_KEYYOUR_API_KEY LIVEKIT_API_SECRETYOUR_API_SECRET# Public configuration NEXT_PUBLIC_LIVEKIT_URLwss://YOUR_…

持续总结中!2024年面试必问 20 道 Rocket MQ面试题(一)

一、请简述什么是RocketMQ&#xff1f; RocketMQ是一个开源的消息中间件&#xff0c;由阿里巴巴团队开发&#xff0c;主要设计用于分布式系统中的异步通信、应用解耦、流量削峰和消息持久化。它支持高吞吐量、高可用性、可扩展性和容错性&#xff0c;是构建大规模实时消息处理…

Linux系统keepalived实现主备高可用方案

Linux系统keepalived实现主备高可用方案 环境准备 装备两台机器&#xff0c;IP地址信息如下&#xff1a; host1&#xff1a; 192.168.18.180 host2&#xff1a; 192.168.18.183 虚拟vip: 192.168.18.188为了测试&#xff0c;分别在两台机器上安装nginx服务&#xff0c;使下面…

React暴露组件的方法给全局作用域调用

在React中&#xff0c;如果你想要暴露组件的方法给全局作用域调用&#xff0c;你可以使用一个全局变量来引用你的组件实例&#xff0c;或者使用Context API来创建一个全局状态&#xff0c;通过它来传递方法引用。 以下是使用Context API的一个简单例子&#xff1a; 创建一个C…

JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(MES与ERP系统的区别和联系)

MES与ERP系统的区别和联系 MES制造执行系统&#xff0c;是一套面向制造公司车间执行层的生产信息化管理系统。MES 可觉得公司提供涉及制造数据管理、计划排产管理、生产调度管理、库存管理、质量管理、人力资源管理、工作中心、设备管理、工具工装管理、采购管理、成本管理、项…

为什么推荐前端用WebStorm软件编程?

一、介绍 WebStorm是由JetBrains公司开发的一款JavaScript开发工具&#xff0c;被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。它支持JavaScript、ECMAScript 6、TypeScript、CoffeeScript、Dart和Flow等多种语言的代码…