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

相同代码在TensorFlow1.15.0与2.3.0版本训练进度输出差异咨询

TensorFlow 1.15 额外进度条问题解答

额外进度条的本质

你观察到的两条额外进度条,分别对应单轮训练结束后的训练集指标全量计算流程、验证集评估流程,是TensorFlow 1.x版本内置Keras模块的默认输出逻辑导致的。

具体原因

  • TensorFlow 1.15 内置的Keras版本为2.2.x/2.3.1,该版本下model.fit()的进度条没有做阶段合并,训练迭代、训练集指标汇总、验证集评估三个阶段会各自输出独立的进度条。而TensorFlow 2.3.0对应的Keras版本已经完成了进度条逻辑优化,三个阶段的进度会合并到单条轮次进度条中,仅在进度条末尾更新验证指标,不会单独输出。
  • 只要你的代码中配置了validation_split参数或者传入了validation_data验证数据集,1.x版本的Keras就会在每轮训练跑完所有训练batch后,先全量遍历训练集计算本轮平均损失、准确率等汇总指标(第一条额外进度条),再全量遍历验证集计算验证指标(第二条额外进度条),两个流程各自独立输出进度。
  • 两者的弃用警告、运行耗时差异属于版本迭代的正常表现:TensorFlow 1.15是1.x分支的最终稳定版,大量API在2.x版本中已经被重构替换,所以旧版本会输出大量弃用提示;同时2.x版本默认开启了图执行优化、Eager模式性能优化,相同代码的运行耗时会比1.15更短。

可选优化方案

如果要在TensorFlow 1.15中隐藏额外进度条,可以显式指定训练和验证的步数,同时调整进度条日志回调:

# 提前计算对应数据集的总步数,传入fit方法
train_steps = len(train_dataset) // batch_size
val_steps = len(val_dataset) // batch_size

# 配置进度条回调
from tensorflow.keras.callbacks import ProgbarLogger
callbacks = [ProgbarLogger(count_mode='steps')]

model.fit(
    ...,
    steps_per_epoch=train_steps,
    validation_steps=val_steps,
    callbacks=callbacks
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:06:03