全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PyTorch 中的广播机制与矩阵乘法:彻底厘清常见混淆

pytorch 的 broadcasting 并不适用于任意形状张量的逐元素运算(如 `+`),也不等同于矩阵乘法的维度兼容性;它仅在满足特定对齐规则时自动扩展维度,而 `x + y` 报错正是因为二者形状不满足广播条件。

在 PyTorch(以及 NumPy)中,“broadcasting” 是一种逐元素(element-wise)运算的自动形状适配机制,其核心规则是:从末尾维度(rightmost)开始对齐,两个张量在每个维度上必须满足——要么尺寸相等,要么其中一方为 1(可被“拉伸”)。不满足该规则的操作会直接报错,绝不会触发广播

以你的代码为例:

import torch

X = torch.tensor([[1, 5, 2, 7],    # shape: (2, 4)
                  [8, 2, 5, 3]])

Y = torch.tensor([[2, 9],          # shape: (4, 2)
                  [11, 4],
                  [9, 2],
                  [22, 7]])

执行 X + Y 时,PyTorch 尝试按 broadcasting 规则对齐维度:

  • X 的形状为 (2, 4),Y 为 (4, 2);
  • 右对齐后:X: (2, 4) vs Y: (4, 2);
  • 最后一维:4 ≠ 2,且均不为 1 → 不兼容
  • 倒数第二维:2 ≠ 4,且均不为 1 → 仍不兼容

因此报错信息 The size of tensor a (4) must match the size of tensor b (2) at non-singleton dimension 1 正是指出:在维度 1(即第 2 个轴,0-indexed)上,X 的大小为 4,Y 的大小为 2,无法广播。

⚠️ 注意:这与矩阵乘法(torch.matmul)完全无关。你提到“X=2×4、Y=4×2,行列匹配”,这确实是矩阵乘法的合法输入,但 + 运算符永远不会执行矩阵乘法——它只做逐元素加法。若要实现矩阵乘,必须显式调用:

result = torch.matmul(X, Y)  # ✅ 正确:输出 shape (2, 2)
print(result)
# tensor([[229,  82],
#         [149, 111]])

✅ 广播的正确示例(来自官方文档风格):

# 满足广播规则:(5, 1, 4, 1) + (   3, 1, 1) → 自动扩展为 (5, 3, 4, 1)
x = torch.empty(5, 1, 4, 1)
y = torch.empty(   3, 1, 1)
print((x + y).shape)  # torch.Size([5, 3, 4, 1])

? 进阶提示:torch.matmul 在高维场景下也支持隐式广播(batch broadcasting)——例如当 X 为 (1, 2, 4)、Y 为 (4, 2) 时,Y 会被广播为 (1, 4, 2),结果为 (1, 2, 2)。但这属于 matmul 的批处理行为,不是 + 运算的 broadcasting

? 总结:

  • +, -, *, / 等运算符严格遵循 broadcasting 规则,不兼容即报错;
  • 矩阵乘法必须用 torch.matmul()(或 @ 运算符),其维度要求是“内维一致”(X @ Y 要求 X.shape[-1] == Y.shape[-2]);
  • 切勿将线性代数的“可乘性”与 broadcasting 的“可加性”混淆——它们是正交的概念,服务于不同运算目的。


# pytorch  # batch  # numpy  # 运算符  # 报错  # 均不  # 不满足  # 不兼容  # 进阶  # 也不  # 是一种  # 适用于  # 批处理 


相关文章: 网站插件制作软件免费下载,网页视频怎么下到本地插件?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  网站制作公司排行榜,四大门户网站排名?  MySQL查询结果复制到新表的方法(更新、插入)  ,制作一个手机app网站要多少钱?  建站之星与建站宝盒如何选择最佳方案?  IOS倒计时设置UIButton标题title的抖动问题  香港服务器租用每月最低只需15元?  建站之星×万网:智能建站系统+自助建站平台一键生成  广平建站公司哪家专业可靠?如何选择?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何通过万网虚拟主机快速搭建网站?  建站之星后台管理:高效配置与模板优化提升用户体验  香港服务器WordPress建站指南:SEO优化与高效部署策略  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  jQuery 常见小例汇总  详解jQuery停止动画——stop()方法的使用  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  北京网站制作的公司有哪些,北京白云观官方网站?  如何在云虚拟主机上快速搭建个人网站?  怀化网站制作公司,怀化新生儿上户网上办理流程?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  昆明高端网站制作公司,昆明公租房申请网上登录入口?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何在Windows服务器上快速搭建网站?  广德云建站网站建设方案与建站流程优化指南  如何正确下载安装西数主机建站助手?  建站之星如何一键生成手机站?  如何通过VPS建站无需域名直接访问?  如何快速搭建虚拟主机网站?新手必看指南  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  建站主机数据库如何配置才能提升网站性能?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在宝塔面板中创建新站点?  如何在自有机房高效搭建专业网站?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何快速搭建二级域名独立网站?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何通过NAT技术实现内网高效建站?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  高防服务器租用指南:配置选择与快速部署攻略  小型网站制作HTML,*游戏网站怎么搭建?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。