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

TensorFlow模型训练如何设置每隔x个epoch输出训练日志

TensorFlow按指定间隔输出训练日志实现方案

不需要使用on_batch_begin方法,按epoch间隔输出更适合通过重写回调的on_epoch_end方法实现,具体实现如下:


1. 自定义间隔日志回调

import tensorflow as tf

class EpochIntervalLogger(tf.keras.callbacks.Callback):
    def __init__(self, interval=10):
        super().__init__()
        # 初始化输出间隔,默认10个epoch输出一次
        self.interval = interval

    def on_epoch_end(self, epoch, logs=None):
        # 框架内置epoch从0开始计数,加1后匹配实际使用的第N个epoch序号
        current_epoch = epoch + 1
        # 匹配输出规则:第1个epoch必输,之后每间隔指定数量输出一次
        if current_epoch == 1 or current_epoch % self.interval == 0:
            print(f"\nEpoch {current_epoch}/{self.params['epochs']}")
            # 可根据自己的训练指标自定义输出内容,比如有准确率就加acc、val_acc字段
            print(f"loss: {logs['loss']:.4f} - val_loss: {logs['val_loss']:.4f}")

2. 修改原有训练代码

epochs = 500
# 实例化回调,设置输出间隔为10
log_callback = EpochIntervalLogger(interval=10)

model.fit(
    X_train, y_train, 
    batch_size=16, epochs=epochs, 
    validation_data=(X_test, y_test),
    # 传入自定义回调
    callbacks=[log_callback],
    # 关闭框架默认的逐epoch输出,避免重复打印
    verbose=0
)

补充说明

  • 如果需要保留原生训练的进度条效果,可以把verbose参数设为1,同时在回调中重写on_epoch_begin方法动态控制日志输出开关即可
  • 所有训练阶段产生的指标都存在logs字典中,需要输出其他指标直接按键取值打印即可

内容的提问来源于stack exchange,提问作者K Split X

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:15:01