Pytorch阅读文档之dot,mm,matmul函数

torch中的矩阵乘法与广播机制 几乎可用于计算所有矩阵/向量相乘的情况,支持broadcast操作,可以理解为torch.mm的broadcast版本,其乘法规则视参与乘法的两个张量的维度而定。特别的,针对多维数据 matmul()乘法,可以认为该 matmul()乘法使用两个参数的后两个维度来计算,其他的维度都可以认为是batch维度。用于计算矩阵和向量之间的乘法(矩阵在前,向量在后),不支持broadcast操作,要求矩阵与向量满足矩阵乘法的要求。用来计算两个向量的点积,不支持broadcast操作,要求两个一维张量的元素个数相同。 阅读详情
AI摘要

本文详细解析了PyTorch中的三种关键矩阵运算函数:dot、mm与matmul的功能与使用场景。从一维向量的点积到高维张量的批量矩阵乘法,逐一介绍了这些函数如何处理不同维度的张量,并提供了丰富的代码示例。

Pytorch阅读文档之dot,mm,matmul函数

torch.dot()

torch.dot(input, tensor) → Tensor
#计算两个张量的点积(内积)
#官方提示:不能进行广播(broadcast).
#example
>>> torch.dot(torch.tensor([2, 3]), torch.tensor([2, 1])) #即对应位置相乘再相加
tensor(7)
>>> torch.dot(torch.rand(2, 3), torch.rand(2, 2))
#报错,只允许一维的tensor
RuntimeError: 1D tensors expected, got 2D, 2D tensors at /Users/distiller/project/conda/conda-bld/pytorch_1570710797334/work/aten/src/TH/generic/THTensorEvenMoreMath.cpp:774

torch.mm

torch.mm(input, mat2, out=None) → Tensor
#对矩阵imput和mat2执行矩阵乘法。 如果input为(n x m)张量,则mat2为(m x p)张量,out将为(n x p)张量。
#官方提示此功能不广播。有关广播的矩阵乘法,请参见torch.matmul()。
#example
>>> mat1 = torch.randn(2, 3)
>>> mat2 = torch.randn(3, 3)
>>> torch.mm(mat1, mat2)
tensor([[ 0.4851,  0.5037, -0.3633],
        [-0.0760, -3.6705,  2.4784]])

torch.matmul()

torch.matmul(input, other, out=None) → Tensor
#两个张量的矩阵乘积。行为取决于张量的维数,如下所示:
#1. 如果两个张量都是一维的,则返回点积(标量)。
>>> # vector x vector
>>> tensor1 = torch.randn(3)
>>> tensor2 = torch.randn(3)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([])
#2. 如果两个参数都是二维的,则返回矩阵矩阵乘积。
# matrix x matrix
>>> tensor1 = torch.randn(3, 4)
>>> tensor2 = torch.randn(4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([3, 5])
#3. 如果第一个参数是一维的,而第二个参数是二维的,则为了矩阵乘法,会将1附加到其维数上。矩阵相乘后,将删除前置尺寸。
# 也就是让tensor2变成矩阵表示,1x3的矩阵和 3x4的矩阵,得到1x4的矩阵,然后删除1
>>> tensor1 = torch.randn(3, 4)
>>> tensor2 = torch.randn(3)
>>> torch.matmul(tensor2, tensor1).size()
torch.Size([4])
#4. 如果第一个参数为二维,第二个参数为一维,则返回矩阵向量乘积。
# matrix x vector
>>> tensor1 = torch.randn(3, 4)
>>> tensor2 = torch.randn(4)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([3])
#5. 如果两个自变量至少为一维且至少一个自变量为N维(其中N> 2),则返回批处理矩阵乘法。如果第一个参数是一维的,则在其维数之前添加一个1,以实现批量矩阵乘法并在其后删除。如果第二个参数为一维,则将1附加到其维上,以实现成批矩阵倍数的目的,然后将其删除。非矩阵(即批量)维度可以被广播(因此必须是可广播的)。例如,如果input为(jx1xnxm)张量,而other为(k×m×p)张量,out将是(j×k×n×p)张量。
>>> # batched matrix x broadcasted vector
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(4)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3])
>>> # batched matrix x batched matrix
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(10, 4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3, 5])
>>> # batched matrix x broadcasted matrix
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3, 5])
>>> tensor1 = torch.randn(10, 1, 3, 4)
>>> tensor2 = torch.randn(2, 4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 2, 3, 5])
00:pytorch常用函数 文章目录1.torch.mul()、torch.mm()、torch.dot()和torch.mv()之间的区别2.torch.allclose(zhat,z) :在一定的误差允许内,判断两个值是否相等 1.torch.mul()、torch.mm()、torch.dot()和torch.mv()之间的区别 torch.mul()是矩阵的点乘,即对应的位相乘,要求shape一样, 返回的还是个矩阵 torch.mm()是矩阵正常的矩阵相乘,(a, b)* ( b, c ) = ( a, c ) torch 阅读详情

相关推荐

矩阵乘法与张量积的本质区别:从线性变换到系统组合的深度解析

在科学计算与工程实践中,矩阵运算是最基础的数学工具之一。矩阵乘法作为线性变换的复合,是连接数据与变换的核心桥梁,广泛应用于神经网络、图形学等领域。而张量积(克罗内克积)则代表了向量空间的组合,用于构建高维系统,在量子计算、信号处理中至关重要。理解这两种运算的本质差异,能帮助开发者在面对多子系统组合或顺序变换时,选择正确的建模工具。本文通过对比矩阵乘法与张量积在定义、维度和应用场景上的不同,并结合神经网络和量子计算中的实际案例,厘清常见混淆点,为高效、准确的工程实现提供指导。

weixin_34005042的博客 382

torch.dot、torch.mv、torch.mm、torch.norm的用法详解

torch.dot的用法: torch.mv的用法: torch.mm的用法

jjw_zyfx的博客 1万+

国产AI芯片推理架构:双芯异构与极低功耗部署实践

大模型推理正从‘能跑’迈向‘高效稳跑’,其核心瓶颈已从算力密度转向能效比与全栈可控性。基于SIMT架构的国产AI芯片(如昇腾910B、寒武纪MLU370-X4)通过硬件微架构定制、内存管理权回归、细粒度算子融合等原理,显著降低KV Cache搬运开销与异常中断率;技术价值体现在TCO(总拥有成本)压缩——实测显示,结合自然冷源与双芯异构调度,单节点年电费可下降63%,交付周期缩短超60%。典型应用场景覆盖政务知识库、工业质检、金融风控等对SLA、国产化适配与长期运维稳定性有严苛要求的领域。本文聚焦真实落地中

weixin_33816300的博客 470

详解torch.dot()、torch.outer()、torch.mul()、torch.mm()和torch.matmul()等函数使用技巧

torch.matmul()函数可以用于1维向量×1维向量,1维向量×2维矩阵,2维矩阵×1维向量,矩阵相乘等不同情况。现将相关案例进行介绍方便日后回顾。

li1784506的博客 9614

机器学习论文精读实战:从梯度失真到可复现建模

在深度学习工程实践中,'读不懂论文'的本质常是缺乏对核心问题建模逻辑的把握——尤其当模型遭遇长程依赖导致的梯度失真、注意力稀释或TD误差衰减时,单纯复述摘要无法支撑真实场景下的调试与迁移。本文聚焦RNN梯度消失、Transformer注意力稀疏化、强化学习自适应bootstrapping三大典型问题,以可复现性为标尺,穿透公式表层,还原BN在时序维度的统计陷阱、mask在显存与语义间的平衡设计、k值动态调整的物理意义。内容直指工业落地痛点:代码开源验证、硬件配置约束、训练毛刺排查,助力算法工程师将顶会方法真

weixin_34357928的博客 353

图相似度计算——SIMGnn源码解读

在运行代码的时候,需要首先指定参数,--histogram,表示使用直方图特征。

qq_52053775的博客 3291

Pytorch基础:张量相关的乘法(torch.mul、torch.mv、torch.matmul、torch.mm、torch.bmm、torch.dot、torch.tensordot、*、@)

本文详细介绍了PyTorch中常见的张量乘法运算,包括torch.mul(逐元素乘法)、torch.matmul(矩阵乘法)、torch.mm(矩阵乘法)、torch.bmm(批量矩阵乘法)、torch.dot(向量点积)、torch.tensordot(张量点积)以及运算符*和@的用法。通过具体示例说明了各种乘法操作的特点,特别是广播机制在不同运算中的应用场景。文章还强调了不同运算对输入张量形状的要求差异,帮助读者理解PyTorch中张量乘法的多样性和适用场景。

保持终身学习的能力,温故而知新 2989

【信息科学与工程学】计算机科学与自动化——第三百零五篇 计算机系统中的各类运算操作02

编号类型领域运算操作运算类型算法算法的详细设计及数学分析参数列表及参数的数值设计应用场景301集合运算关系代数关系集合Feature Selection (Chi-Square)集合运算卡方检验目标函数:χ2=∑E(O−E)2​ 衡量分类特征与目标的相关性;资源:O(n·d);条件:离散特征,离散目标;组合约束:值越大相关性越强。 数据结构:列联表。 代码实现(C++): 特征列,目标列文本分类中的特征选择。302集合运算关系代数关系集合Feature Selection (ANOVA F

weixin_49199313的博客 309

【框架】Pytorch和vLLM

LLM中, 生成文本是自回归的,即生成第 N个词时,需要依赖前面 1到 N−1个词的信息。Query (Q):查询向量(我想找什么信息?Key (K):键向量(我包含什么信息标签?Value (V):值向量(我具体的内容是什么?随着句子变长,大量的计算资源被浪费在重复计算已经处理过的词的 K 和 V 向量上。计算复杂度会随着序列长度呈平方级 O(N2)ON2) 增长,导致生成速度极慢。既然前面词的 K 和 V 向量不会改变,那为什么不把它们存起来呢?预填充阶段 (Prefill)

m0_61788919的博客 587

SIwave学习记录:电热耦合仿真

SIwave电热耦合仿真

m0_68174736的博客 2335

Win11专业版破解RDP限制:实现多用户远程桌面协同办公

本文详细介绍了如何在Windows 11专业版上破解RDP限制,实现多用户远程桌面协同办公。通过使用RDPWrap工具,用户可以绕过微软的授权限制,允许多个用户同时登录同一台电脑,提高硬件利用率和团队协作效率。文章包含详细的安装配置步骤、性能优化技巧及常见问题解决方案,适用于需要远程协作的办公场景。

weixin_33806300的博客 465

PyTorch torch 命名空间完全指南:张量运算、加速器、随机采样与序列化全景解析

本文以 PyTorch 官方 API 参考文档 [docs/source/torch.md](https://link.gitcode.com/i/5aff889c4a5aeabb4569fc91376775fe) 为骨架,系统梳理顶层 `torch` 命名空间的核心能力,涵盖张量创建与索引、加速器(CUDA/XPU/MPS 等)体系、随机采样、序列化、并行控制、梯度禁用、各类数学运算、符号数字与

gitblog_00058的博客 685

PADS导出PCB正反面丝印为CAD文件的方法

本文介绍如何将PADS绘制的pcb格式的PCB文件顶底层丝印及板框导出为CAD的dxf文件格式,并且将底层丝印进行镜像为正常视角

luguodeyo的博客 3291

深度学习必备线性代数:从张量运算到PyTorch实战

线性代数是现代机器学习和深度学习的数学基石,它提供了一套高效描述和处理高维数据的语言。其核心原理在于通过矩阵、向量和张量等结构,将复杂的计算转化为并行化运算,从而充分利用GPU等硬件加速能力。这一技术价值在于极大提升了大规模数据处理的效率,使得训练深层神经网络成为可能。在深度学习应用场景中,线性代数无处不在:从神经网络前向传播的矩阵乘法,到注意力机制中的点积相似度计算,再到防止过拟合的L2正则化(权重衰减)。本文将聚焦于PyTorch框架下的张量操作,通过矩阵乘法、哈达玛积等核心运算的代码实例,帮助读者掌握

weixin_34072458的博客 546

TPAMI 2025新作LRFormer复现笔记:我的Windows 11 + RTX 4090配置全流程

本文详细记录了在Windows 11系统下使用RTX 4090显卡复现TPAMI 2025顶会论文LRTransformer的完整流程,包括硬件配置、系统优化、Python环境搭建及模型训练中的常见问题解决方案。特别针对Windows平台特有的路径管理、CUDA版本冲突和显存优化等关键技术细节提供了实用指南,帮助开发者高效完成环境搭建和模型训练。

weixin_29094301的博客 411

智能温室:温室环境监测_(7).土壤监测技术包括pH值和电导率

土壤的pH值是指土壤溶液的酸碱度,它对植物的营养吸收和生长发育有着重要的影响。在智能温室中,土壤监测是非常重要的一个环节,因为土壤的pH值和电导率直接影响植物的生长和健康。本节将详细介绍如何利用传感器和数据处理技术来监测土壤的pH值和电导率,并提供具体的代码示例。在智能温室中,监测到的土壤pH值和电导率数据需要传输到中央控制系统进行进一步的处理和分析。通过以上步骤,您可以构建一个完整的智能温室土壤监测系统,实时监控土壤的pH值和电导率,确保植物在最佳的生长环境中。校准通常包括在已知电导率的标准溶液中进行。

zhubeibei168的博客 1407

PyTorch torch.compile 排障实战手册:从入门上手到深度调优的完整指南

> 本文以 PyTorch 官方仓库中的技术文档 *torch.compile, the missing manual* 为主体骨架整理扩充而成。该文档聚焦一个核心问题:当你在自己的模型上启用 `torch.compile` 后遇到了性能不及预期、编译报错、内存超支、分布式超时或输出错乱时,应当如何系统化地定位与解决。文中所有配置项、命令与结论均对照当前仓库源码([torch/_dynamo/co

gitblog_00995的博客 491

RAGFlow 系列教程 第三课:后端服务入口与请求生命周期

本文深入解析RAGFlow v0.25.0后端核心机制,重点介绍了Quart框架选型原因和服务启动流程。RAGFlow选择Quart作为Web框架,主要基于其异步能力对LLM调用的支持、Flask生态兼容性以及长响应超时处理优势。文章详细拆解了服务启动的8个关键步骤,从日志初始化到HTTP服务启动,并分析了配置加载、数据库初始化等核心环节。通过源码分析揭示了RAGFlow如何实现动态API注册、双重认证体系等关键技术点,为深入理解该系统的请求处理生命周期提供了基础。

weixin_43674738的博客 187

PyTorch torch.Tensor 权威指南:张量创建、索引、自动求导与核心 API 全解析

`torch.Tensor` 是 PyTorch 深度学习框架中最核心的数据结构,是一个保存单一数据类型元素的多维矩阵。本指南以仓库文档 [docs/source/tensors.md](https://link.gitcode.com/i/86d5bae4c8e55f1b2cae9e930e35fc2f) 为主体,结合仓库源码(`torch/_tensor.py`、`torch/_refs/__

gitblog_00928的博客 481

OceanBase容量统计:租户、数据库、表大小

🍎 数据库版本:OceanBase V4。

Sebastien23的博客 1395

CarSim仿真高级进阶---VS 命令行

仿真软件作为一种强大的工具,被广泛应用于汽车工程领域,本文将介绍如何使用VS命令行进行CarSim仿真的高级进阶操作,我们将结合相关的源代码和描述,帮助读者更好地理解和应用这一功能。打开Visual Studio,在“文件”菜单下选择“新建”->“项目”,然后选择“控制台应用程序”模板,填写项目名称和位置,点击“确定”按钮创建项目。保存源代码后,点击菜单中的“生成”->“生成解决方案”来构建项目,确保构建成功,没有任何错误。点击“编辑”按钮,在弹出的窗口中点击“新建”按钮。,并拥有有效的许可证。

weixin_50547796的博客 308

douyin-downloader 完整配置指南:6 种模式批量下载主页作品、无水印选档与直播录制

把作者主页链接交给一个命令行工具,几十条无水印作品就能自动批量下载并规整到本地文件夹——这正是 douyin-downloader 的定位:一个抖音批量下载工具,覆盖视频、图集、合集、音乐与直播录制,内置进度显示、失败重试、SQLite 去重与浏览器兜底。 ## 功能全景:支持哪些内容、适合谁 douyin-downloader 以链接为输入,自动识别类型并路由到对应下载器。你可以下载单个视频

gitblog_01138的博客 168

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

DeepSpeed Flops Profiler 完全指南:从模型级 FLOPs 测量到逐层瓶颈定位

> 深度神经网络在 GPU 上的性能瓶颈往往隐藏在各模块内部:究竟是参数量过大、乘加运算过多,还是前向延迟主要由算子调度与内存搬运主导?DeepSpeed Flops Profiler 通过在模型上自动注入 hook 并捕获 `torch.nn.functional` 调用,一次性输出参数量、MACs、FLOPs、FLOPS、延迟与吞吐量指标,并下沉到每一层子模块给出可读的聚合与详细报告。本文以

gitblog_00193的博客 485

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

DeepSpeed Flops Profiler 深度指南:精确测量模型的参数、延迟与浮点运算量

本文以 DeepSpeed 仓库中的 [flops-profiler 官方 API 文档](https://link.gitcode.com/i/252335be94945da01bb1f9b0955cda79) 与 [Flops Profiler 教程](https://link.gitcode.com/i/5d0318c41bb2a0ef05a5f077a069b212) 为主线,系统讲解 D

gitblog_00134的博客 155

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CANN ops-nn aclnnMatmul 算子接口深度解析:两段式调用、cubeMathType 语义与多维度矩阵乘实战

本文以 CANN ops-nn 仓库中 `matmul/mat_mul_v3` 模块的 aclnnMatmul 算子接口文档为核心,系统讲解该 API 的产品支持范围、两段式接口调用范式、完整参数语义(尤其是 cubeMathType 五种枚举值的平台差异化行为)、一维输入 shape 推导规则,并结合仓库源码([aclnn_matmul.cpp](https://link.gitcode.com

gitblog_00161的博客 163

torch.mul()、torch.mm()、torch.dot()和torch.mv()之间的区别

torch.mul()是矩阵的点乘,即对应的位相乘,要求shape一样 torch.mm()是矩阵正常的矩阵相乘,(a, b)* ( b, c ) = ( a, c )

SCU-JJkinging的博客 1万+
上一篇: Pytorch阅读文档之torch.cat ,torch.split() and torch.chunk(),torch.stack()函数
下一篇: Mac上Anaconda navigator不能直接进入自带base的环境
GhostintheCode
博客等级 码龄8年 53粉丝 105原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值