You need to enable JavaScript to run this app. RuntimeError:AddmmBackward返回无效梯度 张量形状不匹配问题求助
优惠活动
大模型
产品
解决方案
定价
更多

RuntimeError:AddmmBackward返回无效梯度 张量形状不匹配问题求助

AddmmBackward梯度形状不匹配问题排查与解决

RuntimeError: Function AddmmBackward returned an invalid gradient at index 2 - got [100, 80] but expected shape compatible with [80, 80]

该报错对应线性层核心运算torch.addmm的梯度计算异常,索引2指向线性层的权重参数,本质是权重的实际梯度形状和权重本身的预设形状不匹配,可按以下步骤排查解决:

  • 核对全连接层的输入输出维度配置
    大概率是全连接层的in_features和out_features配置写反。如果当前层输入特征维度为100、输出维度为80,全连接层应配置为nn.Linear(100, 80),若错误配置为nn.Linear(80, 80)就会触发该维度冲突。
  • 检查前一层的输出形状
    在前向传播流程中打印每一层输出的shape属性,确认进入报错线性层的输入最后一维,和该层设置的in_features完全一致。
  • 核对自定义权重操作的参数形状
    如果有手动修改线性层权重、自定义权重初始化的操作,检查是否写错了权重形状,比如原本应为(80, 100)的权重被错误初始化为(80,80),也会导致梯度不匹配。
  • 检查batch维度的异常操作
    排查代码中是否对batch维度做了错误的拼接、切片或转置,比如把(batch_size, 100)的输入错误转置为(100, batch_size)后喂入线性层,也会导致梯度形状错位。

常见错误修正示例

错误写法:

# 输入特征维度实际为100,错误将in_features设为80
fc_layer = nn.Linear(80, 80)

修正写法:

# 匹配输入维度100,输出维度80
fc_layer = nn.Linear(100, 80)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:42:02