Pytorch中矩阵乘法使用及案例

devtools/2025/3/15 2:23:21/

六种矩阵乘法

torch中包含许多矩阵乘法,大致可以分为以下几种:

  • *:即a * b 按位相乘,要求ab的形状必须一致,支持广播操作

  • torch.matmul():最广泛的矩阵乘法

  • @:与torch.matmul()效果一样(等价),即torch.matmul(a, b) == a @ b

  • torch.dot():两个一维向量乘法,不支持广播

  • torch.mm():两个二维矩阵的乘法,不支持广播

  • torch.bmm():两个三维矩阵乘法(批次batch粒度),且两个矩阵必须是三维的,不支持广播操作

其中,torch.matmul()中包含torch.dot()torch.mm()torch.bmm()

代码验证

torch.dot()

a = torch.tensor([2, 3])
b = torch.tensor([2, 1])## 下面四个函数的结果是一样的  结果都是7
a.dot(b)
torch.dot(a, b)
a @ b
torch.matmul(a, b)

输出结果:
在这里插入图片描述

torch.matmul()torch.dot()的主要区别就是,当两个向量(矩阵)的维度不一致时,torch.matmul()会进行广播,而torch.dot()会报错

*

对向量ab进行按位相乘

a = torch.tensor([2, 3])
b = torch.tensor([2, 1])a * b  # [4, 3]

torch.mm()

用于二维矩阵的相乘——第一个向量的和第二个向量的必须相等

mat1 = torch.randn(2, 3)
mat2 = torch.randn(3, 3)## 下面三个输出结果是一样的
torch.mm(mat1, mat2)
mat1.matmul(mat2)
mat1 @ mat2

输出结果:
在这里插入图片描述

torch.matmul()torch.mm()的主要区别就是,当两个矩阵的维度不一致时,torch.matmul()会进行广播,而torch.mm()会报错

torch.bmm()

应用于三维矩阵,要求:

  • 两个矩阵的第一个维度的大小必须相同
  • 必须满足第一个矩阵(b × n × m),第二个矩阵(b × m × p),即第一个矩阵的第三个维度必须和第二个矩阵的第二个维度相同
  • 输出大小:(b × n × p)

该函数相当于分别对每个batch进行二维矩阵相乘

bmat1 = torch.randn(2, 1, 4)
bmat2 = torch.randn(2, 4, 2)## 下面三个输出是一样的
torch.bmm(bmat1, bmat2)
bmat1.matmul(bmat2)
bmat1 @ bmat2

输出结果:
在这里插入图片描述

换一种角度想,torch.bmm()就是相当于按照批次batch进行索引,然后将每个批次内的二维矩阵进行相乘

for i in range(bmat1.shape[0]):  # 索引出来批次bmat1.shape[0]temp =torch.mm(bmat1[i, :, :], bmat2[i, :, :])print(temp)

在这里插入图片描述


http://www.ppmy.cn/devtools/167175.html

相关文章

【eNSP基础使用教程-1】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、更改设备名称指令1、双击路由器进入2、 进入系统视图3、更改设备名称为R14、使用同样的办法修改路由器R2、R3 二、配置路由物理接口的IP 地址1、查看R1路由…

React:类组件(中)

dangerouslySetInnerHTML React写进{}内的东西,不允许被当作代码块解析,是为了防止xss攻击和代码注入 XSS(跨站脚本攻击,Cross-Site Scripting) 是一种常见的安全漏洞,攻击者通过注入恶意脚本到网页中&…

计算机二级web易错点(2)-选择题

HTML(HyperText Markup Language)即超文本标记语言,是专门为 Internet 文档设计的标记语言。 HTML 具有跨平台性,只要在安装了浏览器的设备上,无论设备使用的是什么操作系统,都可以运行 HTML 文档。 在 H…

DeepSeek-R1深度解读

deepseek提出了一种通过强化学习(RL)激励大语言模型(LLMs)推理能力的方法,个人认为最让人兴奋的点是:通过RL发现了一个叫“Aha Moment”的现象,这个时刻发生在模型的中间版本中。在这个阶段&…

QoS质量配置

他们祝你挺拔,再挺拔一点;我只祝你,永远年少,永远一骑当先. 1. QoS的概念 QoS(服务质量)是指一个网络能够利用各种各样的基础技术向选定的网络通信提供更好 的服务的能力。这些基础技术包括:帧中继(FrameR…

文件跨国传输如何加速?UDP改造机制解析

引言:被忽视的"数字物流"危机 全球数字化协作背景下,企业跨国文件传输效率正成为新的竞争力指标。据Gartner统计,跨国企业每年因文件传输延迟导致的协作成本损失高达营收的1.2%。以某新能源车企为例,其中美团队同步10G…

HarmonyOS开发 - 电商App实例二( 网络请求http)

在HarmonyOS中进行网络请求开发时,可以使用"ohos.net.http"库,该库支持常见的HTTP方法,能够满足大多数应用或元服务的需求。 接下来,我们将通过http库,对其进行二次封装,并向后台发送请求&#x…

Docker 基础命令 - 以 Nginx 实战总结

前言 操作镜像:Nginx操作环境:CentOS 7 64Docker版本:1.13.1 1. 在宿主机安装 Docker 软件 可以博主写的另外一篇博客,地址:CentOS 7 64 安装 Docker 2.Docker 基本命令 2.1 拉取 Nginx 镜像 # 搜索镜像 docker s…