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

如何用Matplotlib基于已收集指标绘制4幅独立多学习率曲线图表?

4幅独立学习曲线绘制方案

实现思路

利用Matplotlib的子图布局功能,创建2×2的独立画布,分别对应训练损失、验证损失、训练准确率、验证准确率四类指标,彻底避免所有数据叠加在同一图中。

示例代码

假设你已收集到如下格式的训练数据(替换为你实际的变量名即可):

  • train_loss_dict: 键为学习率,值为对应训练损失列表(按epoch顺序)
  • val_loss_dict: 键为学习率,值为对应验证损失列表
  • train_acc_dict: 键为学习率,值为对应训练准确率列表
  • val_acc_dict: 键为学习率,值为对应验证准确率列表
  • epochs: 训练的总轮次(可通过range(1, len(train_loss_dict[某学习率])+1)生成)
import matplotlib.pyplot as plt

# 1. 创建2×2的子图布局,设置画布大小
fig, axes = plt.subplots(2, 2, figsize=(14, 10))

# 2. 绘制训练损失曲线
ax1 = axes[0, 0]
for lr, losses in train_loss_dict.items():
    ax1.plot(epochs, losses, label=f"LR={lr}")
ax1.set_title("Train Loss vs Epochs")
ax1.set_xlabel("Epochs")
ax1.set_ylabel("Loss")
ax1.legend()
ax1.grid(True)

# 3. 绘制验证损失曲线
ax2 = axes[0, 1]
for lr, losses in val_loss_dict.items():
    ax2.plot(epochs, losses, label=f"LR={lr}")
ax2.set_title("Validation Loss vs Epochs")
ax2.set_xlabel("Epochs")
ax2.set_ylabel("Loss")
ax2.legend()
ax2.grid(True)

# 4. 绘制训练准确率曲线
ax3 = axes[1, 0]
for lr, accs in train_acc_dict.items():
    ax3.plot(epochs, accs, label=f"LR={lr}")
ax3.set_title("Train Accuracy vs Epochs")
ax3.set_xlabel("Epochs")
ax3.set_ylabel("Accuracy")
ax3.legend()
ax3.grid(True)

# 5. 绘制验证准确率曲线
ax4 = axes[1, 1]
for lr, accs in val_acc_dict.items():
    ax4.plot(epochs, accs, label=f"LR={lr}")
ax4.set_title("Validation Accuracy vs Epochs")
ax4.set_xlabel("Epochs")
ax4.set_ylabel("Accuracy")
ax4.legend()
ax4.grid(True)

# 调整子图间距,避免标签重叠
plt.tight_layout()
plt.show()

关键说明

  • 每个子图通过axes[row, col]单独控制,互不干扰,彻底解决数据叠加问题
  • 如果是单学习率场景,直接去掉循环,传入单条数据列表即可
  • 可根据需求调整figsize、线条颜色、网格样式等参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:33:10