You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch广播机制未按预期运行,张量相加报错求助

PyTorch广播机制报错:2x4与4x2张量无法执行加法运算的原因分析

你混淆了广播机制和矩阵乘法的适用规则,这是两个完全不同的运算逻辑,不能混为一谈。

1. 广播机制的核心规则

PyTorch的广播是为了让形状不同的张量能执行逐元素运算,它要求两个张量从最后一个维度开始向前逐一匹配,且每个维度需满足以下任一条件:

  • 两个张量在该维度的尺寸完全相等
  • 其中一个张量在该维度的尺寸为1(可被自动扩展至另一张量的尺寸)

看你的例子:

  • X的形状:torch.Size([2, 4])
  • Y的形状:torch.Size([4, 2])

从后往前看维度:

  • 倒数第一维(列):X是4,Y是2,既不相等也没有一个是1,完全不满足广播条件,因此执行加法时报错。

2. 矩阵乘法的规则(你混淆的点)

矩阵乘法(torch.matmul或@操作符)的规则是:前一个张量的最后一维尺寸等于后一个张量的倒数第二维尺寸(即A的列数=B的行数)。你的X(2,4)和Y(4,2)确实满足这个条件,但这只适用于矩阵乘法,和广播没有关系。

3. 解决方法

如果你的需求是逐元素加法,需要调整张量形状满足广播规则,比如:

# 转置X后和Y相加,两者形状均为(4,2)
print(X.T + Y)
# 或转置Y后和X相加,两者形状均为(2,4)
print(X + Y.T)

如果你的需求本来就是矩阵乘法,则应该用矩阵乘法操作:

# 结果为2x2的张量
print(X @ Y)

内容的提问来源于stack exchange,提问作者Bruck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:22:54