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

TensorFlow-Keras训练时如何在每个epoch结束后调用测试集评估性能

实现方案

你只需要在on_epoch_end回调逻辑中新增测试集评估步骤,同时将测试集准确率写入训练日志字典logs,Keras就会自动在训练输出中追加test_acc字段。由于Lambda回调的匿名函数不支持多语句逻辑,我们将回调逻辑单独封装为函数实现,修改后代码如下:

result_dic = {"epochs": []}

# 单独定义epoch结束时的回调逻辑
def on_epoch_end(epoch, logs):
    # 评估测试集,verbose设为0避免额外输出打乱训练进度条
    test_loss, test_acc = model.evaluate(x_test, y_test, batch_size=batch_size, verbose=0)
    # 将测试集准确率写入日志字典,训练输出会自动打印该字段
    logs['test_acc'] = test_acc
    # 同步写入结果存储字典
    result_dic["epochs"].append({
        'epoch': epoch + 1, 
        'acc': str(logs['acc']), 
        'val_acc': str(logs['val_acc']),
        'test_acc': str(test_acc)
    })

json_logging_callback = LambdaCallback(
    on_epoch_begin=lambda epoch, logs: [learning_rate],
    on_epoch_end=on_epoch_end
)

model.fit(x_train, y_train,
          validation_data=(x_val, y_val),
          batch_size=batch_size,
          epochs=epochs,
          callbacks=[json_logging_callback])

注意事项

  • 如果你的模型配置了多个评估指标,model.evaluate返回的结果会按照[总损失, 指标1, 指标2...]的顺序排列,按需取对应位置的值即可
  • 测试集评估会增加单轮epoch的耗时,若测试集数据量较大可适当调大评估用的batch_size优化速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:27:03