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

如何绘制TensorFlow Keras模型的训练与验证准确率、损失曲线?

实现方法

Keras的model.fit()返回的History对象会自动记录每一轮训练的训练集、验证集损失,以及你在compile阶段指定的所有评估指标,所有数据存在history.history字典结构中,你不需要修改现有编译、训练、评估的代码,直接基于这个字典调用matplotlib就能画出需要的曲线。

针对你当前写的二分类模型代码,history.history里默认存了4组核心数据:

  • loss:逐轮训练集损失值
  • accuracy:逐轮训练集分类准确率
  • val_loss:逐轮验证集损失值
  • val_accuracy:逐轮验证集分类准确率

绘图代码

先确保环境装了matplotlib,执行命令安装:
pip install matplotlib

直接在你现有训练代码(即history = model.fit(...))之后添加以下代码即可:

import matplotlib.pyplot as plt

# 从history中提取绘图数据
train_loss = history.history['loss']
val_loss = history.history['val_loss']
train_acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
epoch_range = range(1, len(train_loss) + 1)

# 创建1行2列的画布,分别放损失曲线、准确率曲线
plt.figure(figsize=(12, 5))

# 绘制损失子图
plt.subplot(1, 2, 1)
plt.plot(epoch_range, train_loss, 'b-', label='Training Loss')
plt.plot(epoch_range, val_loss, 'r-', label='Validation Loss')
plt.title('Training and Validation Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend()
plt.grid(alpha=0.3)

# 绘制准确率子图
plt.subplot(1, 2, 2)
plt.plot(epoch_range, train_acc, 'b-', label='Training Accuracy')
plt.plot(epoch_range, val_acc, 'orange', label='Validation Accuracy')
plt.title('Training and Validation Accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.legend()
plt.grid(alpha=0.3)

# 自动调整子图间距,渲染展示
plt.tight_layout()
plt.show()

如果需要把曲线图保存到本地,在plt.show()之前加一行代码即可:
plt.savefig('train_val_curve.png', dpi=300, bbox_inches='tight')


补充说明
  • 如果你后续在model.compile()的metrics参数里新增其他评估指标(比如AUC、精确率、召回率),验证集对应的指标键名只需要在训练集指标名前加val_前缀即可,比如训练集AUC的键是auc,验证集AUC的键就是val_auc,提取逻辑和准确率完全一致。
  • 如果你不用validation_split拆分内部验证集,而是在model.fit()里传入自定义的验证集validation_data=(X_val, y_val),history的记录逻辑不变,上面的绘图代码不需要做任何修改。
  • 你可以直接通过输出的曲线判断训练状态:如果验证集损失持续下降、准确率持续上升,说明模型仍在收敛;如果验证集损失开始抬升、训练集损失持续下降,说明模型已经出现过拟合,可以考虑加早停机制终止训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:36:21