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

未将Keras model.fit结果赋值给变量,如何获取其输出用于分析?

解决Keras未保存model.fit结果时的指标获取问题

方法1:提取终端/控制台的训练日志

Keras运行model.fit时会默认打印每一轮的训练指标(损失、准确率等),如果你的运行终端或环境日志未清空,可直接从中提取数据:

  • 逐行筛选出每一轮的loss、val_loss、accuracy(或自定义指标)数值
  • 将提取的数值整理为列表,即可用Matplotlib等工具绘制训练曲线

示例代码(假设已从日志手动提取数值):

import matplotlib.pyplot as plt

# 从日志提取的每轮训练/验证损失
train_loss = [0.82, 0.51, 0.33, 0.22, 0.16]
val_loss = [0.76, 0.57, 0.36, 0.27, 0.21]

plt.plot(train_loss, label='Training Loss')
plt.plot(val_loss, label='Validation Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend()
plt.show()

方法2:利用已启用的回调日志

如果训练时添加了CSVLogger回调,无论是否保存history变量,日志文件都会完整记录所有训练指标:

  • 找到你指定的日志文件(如training_log.csv)
  • 用Pandas读取文件后直接分析绘图

示例代码:

import pandas as pd
import matplotlib.pyplot as plt

# 读取训练日志文件
log_df = pd.read_csv('training_log.csv')

# 绘制准确率曲线
plt.plot(log_df['accuracy'], label='Training Accuracy')
plt.plot(log_df['val_accuracy'], label='Validation Accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.legend()
plt.show()

方法3:获取模型最终训练指标(仅单轮结果)

如果没有日志也未设置回调,只能从模型本身获取最终一轮的指标,无法得到完整训练过程的变化:

  • 使用model.evaluate()在测试集上重新计算最终指标,注意该结果与训练时的验证集指标可能存在差异

示例代码:

# 假设test_dataset是你的测试数据集
final_test_loss, final_test_acc = model.evaluate(test_dataset)
print(f"最终测试损失: {final_test_loss}, 最终测试准确率: {final_test_acc}")

后续预防方案

  • 训练时务必将model.fit()结果赋值给变量:history = model.fit(...)
  • 强制添加CSVLogger回调,确保训练日志持久化:
    from keras.callbacks import CSVLogger
    csv_logger = CSVLogger('training_log.csv', append=True)
    model.fit(train_dataset, validation_data=val_dataset, callbacks=[csv_logger])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:27:19