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

相同结构同数据集下Keras Sequential与Functional模型准确率差异问题

Keras Sequential与Functional实现训练结果差异原因分析

核心原因:Sequential实现的交叉验证逻辑存在数据泄露,准确率虚高

Sequential对应代码中,model_1在全局仅实例化一次,传入KerasClassifier的build_fn直接返回这个已创建的全局模型。在10折交叉验证执行过程中,每一轮折的训练都会复用前一轮训练后更新过的模型权重,不会做初始化重置,相当于前一折的测试数据间接参与了后一折的模型训练,最终得到的0.9以上的准确率是虚假结果,不具备参考价值。

Functional实现的结果是当前配置下的真实表现

Functional对应代码中,每次执行交叉验证的单折训练时,都会调用get_model_2()重新初始化一个全新的模型,权重完全重置,不存在数据泄露问题,得到的0.5左右的准确率是当前模型结构、训练参数配置下的真实效果。

额外可修正的训练配置问题

除了上述核心差异外,两段代码都存在两处配置错误,也会影响模型收敛效果:

  • 标签使用错误:代码中已通过LabelEncoder对原始标签编码得到label变量,但实际传入训练的还是原始未编码的y,如果原始标签为字符串格式,会直接导致标签匹配错误,模型无法正常学习。
  • 损失函数配置错误:二分类任务使用binary_crossentropy损失时,输出层为Dense(1)且未添加sigmoid激活,需要将损失函数修改为loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),否则损失计算逻辑错误,会导致模型无法收敛。

内容的提问来源于stack exchange,提问作者Mohamad Kouhi Moghadam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:36:01