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

拟合Keras Sequential模型时出现logits与labels形状不匹配ValueError

错误原因

当前报错为二分类场景下的模型输出、标签、损失函数三者不匹配:

  • 你的标签y的形状为(None, 1),是单值的0/1二分类标签
  • 模型最后一层设置为2个神经元加softmax激活,输出形状为(None,2),对应两个类别的预测概率
  • 你选用的binary_crossentropy损失要求输入的预测值和标签形状完全一致,三者参数不适配触发报错

修正方案(二选一即可)

方案1:调整为标准二分类配置(推荐)

仅需修改3处代码:

  1. 替换模型最后输出层:
# 注释/删除原来的 model.add(Dense(2, activation='softmax'))
model.add(Dense(1, activation='sigmoid'))
  1. 替换预测逻辑:
# 注释/删除原来的 pred_y = pred.argmax(axis=-1)
pred_y = (pred > 0.5).astype(int)
  1. 编译部分的损失函数保持binary_crossentropy不变,无需修改。

方案2:保留2输出softmax的配置

仅需修改1处编译代码:

# 注释/删除原来的compile行,替换为下面的代码
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

预测部分的pred_y = pred.argmax(axis=-1)逻辑无需修改,sparse_categorical_crossentropy损失天然支持单值整数标签和多类别概率输出的形状适配,不需要额外对标签做独热编码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:02