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

Keras中Early Stopping仅训练1个epoch的问题排查与解决

问题诊断与快速修复

哈哈,这个问题其实很容易忽略——你在启用早停的那行model.fit()代码里,漏掉了epochs=200这个参数!

Keras的fit()函数默认只跑1个epoch,哪怕你设置了patience=5,模型也没机会跑到能触发早停的轮次,直接就结束了。这就是为什么一启用早停就只训练1轮的核心原因。

修正后的完整代码

把epochs=200加回去,和你无早停时的调用保持一致:

# 先初始化早停回调(建议显式指定monitor,逻辑更清晰)
early_stopping = EarlyStopping(monitor='val_loss', patience=5)
# 训练时补上epochs参数
hist = model.fit(X, y, validation_split=0.2, callbacks=[early_stopping], 
                 batch_size=16, epochs=200)

额外优化建议

为了让早停功能更实用,我还建议加上restore_best_weights=True参数——这样模型停止训练时,会自动恢复到验证集损失最低的那个epoch的权重,而不是停在最后一个可能已经过拟合的epoch:

early_stopping = EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)

另外可以确认一下:你的验证集划分validation_split=0.2是合理的,损失函数用的mean_absolute_percentage_error和监控的val_loss对应正确,这些都没问题。

这样修改后,模型就会按照预期最多跑200个epoch,只有当验证集损失连续5个epoch没下降时才会提前停止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:30:51