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

如何实现每10个Epoch输出一次性能指标?含训练代码场景

解决Keras训练时每10个Epoch输出信息的问题

嘿,这俩问题本质上是一回事儿,都是要控制训练过程中日志的输出频率对吧?我给你两种靠谱的解决办法,推荐第一种,更符合Keras的最佳实践~

方法一:自定义回调函数(推荐)

Keras自带的fit方法默认的输出模式要么太频繁要么太简洁,咱们可以通过自定义回调类来精准控制每10个Epoch输出一次信息。这种方式不用自己写循环,Keras会自动帮你在每个Epoch结束时触发回调逻辑。

具体步骤:

  1. 导入Keras的回调基类
  2. 定义一个继承自Callback的自定义日志类,重写on_epoch_end方法来判断是否是第10、20...个Epoch,然后输出指标
  3. 在model.fit里加入这个回调即可

修改后的完整代码如下:

from tensorflow.keras.callbacks import Callback

# 自定义每10个Epoch输出的回调类
class TenEpochLogger(Callback):
    def on_epoch_end(self, epoch, logs=None):
        # 注意Keras里的epoch参数是从0开始计数的,所以实际Epoch数要+1
        if (epoch + 1) % 10 == 0:
            print(f"\n=== Epoch {epoch+1} 训练结束 ===")
            # 遍历logs里的所有指标(比如loss、accuracy等,取决于你模型编译时的设置)
            for metric_name, metric_value in logs.items():
                print(f"  {metric_name}: {metric_value:.4f}")

# 你的原有代码,加上回调参数
model = baseline_model()
# 实例化自定义回调
epoch_logger = TenEpochLogger()
# fit时传入callbacks,同时设置verbose=0关闭默认输出(避免重复打印)
model.fit(X_train, y_train, epochs=50, callbacks=[epoch_logger], verbose=0)
y_pred = model.predict(X)

这样设置后,每完成10个Epoch,就会清晰地打印出该Epoch对应的所有性能指标,完全符合你的需求~

方法二:手动分批次训练(备选)

如果你更习惯自己写循环控制训练节奏,也可以把50个Epoch拆成5次,每次训练10个Epoch,然后手动评估并输出指标:

model = baseline_model()
total_epochs = 50
batch_epochs = 10

for start_epoch in range(0, total_epochs, batch_epochs):
    # 训练10个Epoch,initial_epoch确保接着上一次的进度继续训练
    model.fit(X_train, y_train, epochs=start_epoch + batch_epochs, 
              initial_epoch=start_epoch, verbose=0)
    # 评估并输出当前训练后的指标
    current_epoch = start_epoch + batch_epochs
    print(f"\n=== 完成第{current_epoch}个Epoch训练 ===")
    # 这里的评估指标要和你模型编译时的metrics对应,比如loss和accuracy
    loss, accuracy = model.evaluate(X_train, y_train, verbose=0)
    print(f"  loss: {loss:.4f}, accuracy: {accuracy:.4f}")

y_pred = model.predict(X)

这种方式也能实现需求,但相比回调函数,代码会更繁琐一点,而且需要手动处理评估逻辑,所以更推荐第一种回调的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:47:08