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

TensorFlow Keras训练模型时如何每10个epoch打印一行日志

实现方案

Keras内置的verbose参数仅支持0(静默)、1(动态进度条)、2(逐epoch打印)三种模式,没有提供间隔N轮打印日志的配置,通过自定义轻量回调即可实现需求,具体操作如下:

  • 第一步:将fit方法的verbose参数设为0,关闭默认的逐epoch日志输出,避免冗余打印
  • 第二步:自定义日志回调类,仅在轮次为设定间隔的整数倍时,按原有格式输出训练、验证指标
  • 第三步:将自定义回调实例传入fit方法的callbacks参数列表,启动训练即可

完整代码示例

import tensorflow as tf

# 自定义间隔打印日志的回调
class IntervalEpochLogger(tf.keras.callbacks.Callback):
    def __init__(self, print_interval=10):
        super().__init__()
        self.interval = print_interval

    def on_epoch_end(self, epoch, logs=None):
        # Keras内部epoch从0开始计数,+1对齐常规认知的轮次编号
        current_epoch = epoch + 1
        # 非间隔轮次直接跳过,不打印
        if current_epoch % self.interval != 0:
            return
        # 兼容新旧版本Keras的指标字段名
        train_loss = logs.get('loss')
        train_acc = logs.get('accuracy', logs.get('acc'))
        val_loss = logs.get('val_loss')
        val_acc = logs.get('val_accuracy', logs.get('val_acc'))
        # 对齐原有日志格式输出
        print(f"\nEpoch {current_epoch}/{self.params['epochs']}")
        print(f"0s - loss: {train_loss:.4f} - acc: {train_acc:.4f} - val_loss: {val_loss:.4f} - val_acc: {val_acc:.4f}")

# 修改后的fit调用
model.fit(
    X, y,
    epochs=40,
    batch_size=32,
    validation_split=0.2,
    verbose=0, # 关闭默认日志
    callbacks=[IntervalEpochLogger(print_interval=10)]
)

注:如果需要调整打印间隔,修改初始化IntervalEpochLogger时传入的print_interval数值即可,比如传入5就会每5个epoch打印一次日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:27:14