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

如何修复VS Code文档中Keras示例预测结果恒定的bug?

问题原因

代码的bug出在最终预测结果的生成逻辑上:

  • 模型最后一层是1个使用sigmoid激活的神经元,属于标准二分类结构,输出的是形状为(样本数, 1)的数组,每个值是样本属于正类(存活)的概率,范围在0-1之间。
  • 原代码用np.argmax(model.predict(X_test), axis=-1)取每个样本输出的最大值索引,对长度为1的一维数组来说,唯一的索引永远是0,所以不管模型参数是什么、有没有经过训练,输出的预测结果全是0。恰好测试集中61%的样本标签为0(未存活),所以无论怎么改参数、甚至跳过训练步骤,准确率都固定为61%。

这个错误本质是示例代码作者混淆了二分类sigmoid输出、多分类softmax输出的预测写法:只有多分类任务最后一层神经元数等于类别数、输出是长度为类别数的概率数组时,才需要用argmax取最大概率对应的类别。

修复方案

把错误的预测代码行替换为二分类sigmoid对应的判断逻辑即可:

# 原错误代码:y_pred = np.argmax(model.predict(X_test), axis=-1)
y_pred = (model.predict(X_test) > 0.5).astype(int).flatten()

这段逻辑的作用是把模型输出的大于0.5的概率判定为正类(标签1),小于等于0.5的判定为负类(标签0),拉平成和y_test形状一致的一维数组后再计算准确率。
修复后正常跑完训练流程,这个简单网络在该数据集上的准确率通常能达到75%-80%区间,不会再固定卡在61%。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:51:26