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

PyTorch乘法全解析

在PyTorch里做乘法可不是随便选个符号就行——不同的乘法对应着完全不同的运算逻辑用错了轻则结果不对重则直接报错。今天就把PyTorch里常用的几种乘法掰开揉碎了讲从原理到代码例子保证你看完能分清什么时候该用哪种。一、逐元素乘法* 运算符与torch.mul()原理这种乘法最直观就是两个张量对应位置的元素相乘要求两个张量的形状要么完全相同要么满足广播机制Broadcast——简单说就是形状可以通过自动扩展维度来匹配比如一个(3,)的向量和一个(1,3)的矩阵会自动把向量扩展成(1,3)再逐元素相乘。代码例子importtorch# 形状完全相同的情况atorch.tensor([[1,2],[3,4]])btorch.tensor([[5,6],[7,8]])result1a*b result2torch.mul(a,b)print(逐元素乘法结果*:\n,result1)print(逐元素乘法结果torch.mul:\n,result2)# 广播机制的情况ctorch.tensor([10,20])# 形状(2,)dtorch.tensor([[1],[2]])# 形状(2,1)result3c*dprint(广播逐元素乘法结果:\n,result3)输出结果逐元素乘法结果*: tensor([[ 5, 12], [21, 32]]) 逐元素乘法结果torch.mul: tensor([[ 5, 12], [21, 32]]) 广播逐元素乘法结果: tensor([[10, 20], [20, 40]])可以看到*和torch.mul()的效果完全一致前者是后者的语法糖日常写代码用*更简洁。二、矩阵乘法 运算符与torch.matmul()原理这就是线性代数里标准的矩阵乘法要求第一个张量的最后一个维度大小等于第二个张量的倒数第二个维度大小比如形状为(m, n)的矩阵和(n, p)的矩阵相乘结果是(m, p)的矩阵。它还支持更高维的张量运算比如处理批量矩阵如果输入是(batch_size, m, n)和(batch_size, n, p)结果就是(batch_size, m, p)会自动对每个batch单独做矩阵乘法。代码例子importtorch# 二维矩阵乘法atorch.tensor([[1,2],[3,4]])# 形状(2,2)btorch.tensor([[5,6],[7,8]])# 形状(2,2)result1a b result2torch.matmul(a,b)print(矩阵乘法结果:\n,result1)print(矩阵乘法结果torch.matmul:\n,result2)# 批量矩阵乘法batch_atorch.randn(3,2,3)# 3个(2,3)的矩阵batch_btorch.randn(3,3,4)# 3个(3,4)的矩阵result3batch_a batch_bprint(批量矩阵乘法结果形状:,result3.shape)输出结果矩阵乘法结果: tensor([[19, 22], [43, 50]]) 矩阵乘法结果torch.matmul: tensor([[19, 22], [43, 50]]) 批量矩阵乘法结果形状: torch.Size([3, 2, 4])这里同样是torch.matmul()的语法糖对于二维矩阵来说两者完全等价高维张量运算时torch.matmul()会自动识别批量维度非常适合深度学习里的批量数据处理。三、向量点积torch.dot()原理专门用于两个一维张量向量的点积即对应元素相乘后求和要求两个向量的长度必须相同。注意它只能处理一维张量输入高维张量会报错。代码例子importtorch atorch.tensor([1,2,3])btorch.tensor([4,5,6])resulttorch.dot(a,b)print(向量点积结果:,result)输出结果向量点积结果: tensor(32)计算过程是14 25 3*6 4101832和数学上的点积定义完全一致。四、批量矩阵乘法专用torch.bmm()原理和torch.matmul()的批量矩阵乘法类似但它要求输入必须是三维张量且第一个维度是batch_size后面两个维度是矩阵的行和列即输入形状为(batch_size, m, n)和(batch_size, n, p)输出是(batch_size, m, p)。它的限制比torch.matmul()更严格不支持广播必须保证两个输入的batch_size一致且中间维度匹配。代码例子importtorch batch_atorch.randn(2,3,4)# 2个(3,4)的矩阵batch_btorch.randn(2,4,5)# 2个(4,5)的矩阵resulttorch.bmm(batch_a,batch_b)print(torch.bmm结果形状:,result.shape)输出结果torch.bmm结果形状: torch.Size([2, 3, 5])如果尝试输入非三维张量比如二维矩阵torch.bmm()会直接报错适合明确知道是批量矩阵乘法的场景避免不小心触发广播导致错误。五、总结对比乘法方式运算逻辑形状要求适用场景* / torch.mul()逐元素相乘形状相同或满足广播对应元素的乘积运算 / torch.matmul()矩阵/批量矩阵乘法第一个最后一维第二个倒数第二维支持广播线性变换、网络层运算torch.dot()一维向量点积必须是一维张量长度相同向量相似度计算等torch.bmm()三维批量矩阵乘法必须是三维张量batch_size一致中间维度匹配明确的批量矩阵运算避免广播人能力有限有问题随时联系。
http://www.zskr.cn/news/1407176.html

相关文章:

  • 搭上鸿蒙“快车”,ToDesk远控如何用全场景体验点燃效率革命?
  • Codex 桌面版 使用国内大模型系列一 | EchoBird
  • Ubuntu 24.04 下 NVIDIA GT 1030 显卡驱动故障修复全记录
  • ARM芯片JTAG通信故障分析与解决方案
  • 多评价器强化学习在四足机器人控制中的应用与优化
  • 财务预测模型升级迫在眉睫:ChatGPT已支持IFRS 9预期信用损失建模,仅剩72小时获取监管认可接口文档
  • 电力工程项目信息平台的数据价值:中项网如何提升设备企业获客效率 - GrowthUME
  • 2026年罗斯蒙特差压变送器国产平替:五家优选深度解析 - 科技焦点
  • 选变频器风机品牌怎么选?2026年5月推荐TOP5评测工业场景防过载专业选择指南
  • 2026年展台设计搭建公司综合实力对比分析
  • 实在Agent在哪些行业口碑最突出?深度解析企业级AI智能体落地实践
  • OpenVINO™ AI音频插件:在Audacity中免费体验本地AI音频处理
  • 5月聚焦亳州,口碑好的新能源汽车专业学校推荐来啦,职业学校/机电一体化专业学校,新能源汽车专业学校哪家好 - 品牌推荐师
  • 别再只用Animator了!聊聊Unity序列帧动画的另一种高效管理思路(以跑酷游戏为例)
  • 美国教皇发表未来宣言:AI已成最大挑战,人类必须严加监管
  • 告别Animator!用Unity Playable API手搓一个轻量级动画播放器(附完整代码)
  • ArcGIS Pro 基础:图形和文本做注记
  • OpenCV实战:从原理到代码,详解undistort、initUndistortRectifyMap与图像去畸变
  • 3步搞定B站8K高清视频下载:DownKyi终极免费方案
  • 2026西安靠谱导游TOP3实测榜单!零投诉无隐形消费,新手出游闭眼选 - 旅行分享
  • TinyML赋能RIS:在MCU上实现智能波束赋形的量化部署与优化
  • 落地复盘:AI Coding 助手在 50 人研发团队中的 6 个月实战报告
  • APISIX 限流插件 `limit-count`
  • Java 文件操作与 IO 流入门:从基础到实战,新手必看全攻略
  • 机房运维效率翻倍:手把手教你用同方易教V2.4搞定几十台电脑系统批量部署
  • ChatGPT起草的合同被法院驳回?——4类高危法律文本AI生成红线与人工复核必检清单
  • 2026 全年天津离婚律所口碑榜!围绕多套房产分割方案/学区房学位保留 - 资讯快报
  • 2026年塑料托盘厂家深度测评:如何为仓储物流匹配最佳方案? - 资讯快报
  • Git版本控制-本地阶段
  • 双非小白逆袭美团大模型Offer!深度复盘面试血泪经验,附收藏攻略