如何在训练时一边训练一边画出acc-loss图
时间: 2023-12-28 15:04:50 浏览: 109
在训练过程中一边训练一边实时绘制准确率和损失值的图表,您可以使用 Matplotlib 库的交互式模式进行实现。以下是一个示例:
```python
import matplotlib.pyplot as plt
# 创建空的列表来保存准确率和损失值
train_accuracy = []
train_loss = []
# 开启交互式模式
plt.ion()
# 在训练循环中更新准确率和损失值,并实时绘制图表
for epoch in range(num_epochs):
# 在每个epoch之前,清空图表
plt.clf()
# 训练代码...
# 计算准确率和损失值
accuracy, loss = compute_accuracy_and_loss()
# 更新准确率和损失值列表
train_accuracy.append(accuracy)
train_loss.append(loss)
# 绘制准确率图
plt.subplot(1, 2, 1)
plt.plot(train_accuracy, label='Train Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.title('Training Accuracy')
plt.legend()
# 绘制损失值图
plt.subplot(1, 2, 2)
plt.plot(train_loss, label='Train Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.title('Training Loss')
plt.legend()
# 实时更新图表
plt.pause(0.1)
# 关闭交互式模式
plt.ioff()
# 显示最终的图表
plt.show()
```
这段代码中,我们使用了 `plt.ion()` 开启了交互式模式,接着在每个 epoch 中清空图表并更新准确率和损失值的列表。然后,在每个 epoch 结束时,我们实时绘制准确率和损失值的图表,使用 `plt.pause(0.1)` 实现实时更新的效果。最后,我们使用 `plt.ioff()` 关闭交互式模式,并显示最终的图表。您可以根据自己的训练代码和需求进行相应的修改。
阅读全文