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

为什么TensorFlow的model.fit仅保存最后一轮验证准确率与损失

问题原因

你在model.fit调用中错误地为非生成器格式的验证集配置了validation_steps参数。
validation_steps仅适用于验证集为生成器(如ImageDataGenerator.flow输出的迭代器)或tf.data.Dataset对象的场景,用来指定每轮验证需要迭代的batch数。你当前传入的validation_data=(testX, testY)是普通的NumPy数组/张量格式,TensorFlow默认会自动遍历全部验证集计算每轮的指标,不需要额外指定validation_steps。硬加该参数会导致验证逻辑异常,最终仅保存了1次验证结果。

修复方案

方案1:删除多余的validation_steps参数

直接修改model.fit代码,移除针对验证集的步数配置即可,重新训练后历史数据中就会保存每轮的验证集指标:

H = model.fit(
aug.flow(trainX, trainY, batch_size=BS),
steps_per_epoch=len(trainX) // BS,
validation_data=(testX, testY),
epochs=EPOCHS)

方案2:将验证集也转为生成器格式

如果你需要保留validation_steps配置,可以把验证集也封装为和训练集同类型的生成器:

# 验证集生成器不需要做数据增强,直接用普通迭代即可
val_gen = ImageDataGenerator().flow(testX, testY, batch_size=BS)
H = model.fit(
aug.flow(trainX, trainY, batch_size=BS),
steps_per_epoch=len(trainX) // BS,
validation_data=val_gen,
validation_steps=len(testX) // BS,
epochs=EPOCHS)

注意:你当前已经生成的历史文件中仅保留了最后一轮的验证指标,无法补全之前轮次的数值,需要按上述方案修改后重新训练才能绘制完整的验证集曲线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:54:03