📚博客主页:knighthood2001
✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下)
🎃知识星球:【认知up吧|成长|副业】介绍
❤️如遇文章付费,可先看看我公众号中是否发布免费文章❤️
🙏笔者水平有限,欢迎各位大佬指点,相互学习进步!
上文,我们返回的这样的一个数据。
train_process = pd.DataFrame(data={
"epoch": range(num_epochs),
"train_loss_all": train_loss_all,
"val_loss_all": val_loss_all,
"train_acc_all": train_acc_all,
"val_acc_all": val_acc_all, }
)
接着,我们需要对其进行可视化。
结果展示
我跑了10轮,花了12分钟。
代码部分
def matplot_acc_loss(train_process):
# 显示每一次迭代后的训练集和验证集的损失函数和准确率
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(train_process['epoch'], train_process.train_loss_all, "ro-", label="Train loss")
plt.plot(train_process['epoch'], train_process.val_loss_all, "bs-", label="Val loss")
plt.legend()
plt.xlabel("epoch")
plt.ylabel("Loss")
plt.subplot(1, 2, 2)
plt.plot(train_process['epoch'], train_process.train_acc_all, "ro-", label="Train acc")
plt.plot(train_process['epoch'], train_process.val_acc_all, "bs-", label="Val acc")
plt.xlabel("epoch")
plt.ylabel("acc")
plt.legend()
plt.savefig("train_process.png")
plt.show()
这段代码定义了一个函数 matplot_acc_loss(train_process)
,用于绘制训练过程中每个 epoch 后的训练集和验证集的损失函数和准确率曲线,并保存为名为 train_process.png
的图片文件。
让我们逐步解释这个函数的实现:
- 函数定义:
def matplot_acc_loss(train_process):
- 这是一个 Python 函数的定义,函数名为
matplot_acc_loss
,它接收一个参数train_process
,这个参数通常是一个包含训练过程中各种指标的数据结构,例如 DataFrame 或字典。
- 绘制图像:
plt.figure(figsize=(12, 4))
- 创建一个新的图形窗口,指定图形的大小为宽度 12 英寸,高度 4 英寸。
- 绘制第一个子图(左侧) - 损失函数:
plt.subplot(1, 2, 1)
plt.plot(train_process['epoch'], train_process.train_loss_all, "ro-", label="Train loss")
plt.plot(train_process['epoch'], train_process.val_loss_all, "bs-", label="Val loss")
plt.legend()
plt.xlabel("epoch")
plt.ylabel("Loss")
- 使用
subplot
创建一个 1x2 的子图布局,当前选中第一个子图。 - 使用
plot
函数分别绘制训练集和验证集每个 epoch 的损失函数,train_process['epoch']
是 x 轴数据,train_process.train_loss_all
和train_process.val_loss_all
分别是训练集和验证集的损失函数数据。 "ro-"
和"bs-"
是绘图的样式,“ro-” 表示红色圆点线,“bs-” 表示蓝色方块线。legend()
添加图例,标明每条曲线对应的标签。xlabel
和ylabel
分别设置 x 轴和 y 轴的标签。
- 绘制第二个子图(右侧) - 准确率:
plt.subplot(1, 2, 2)
plt.plot(train_process['epoch'], train_process.train_acc_all, "ro-", label="Train acc")
plt.plot(train_process['epoch'], train_process.val_acc_all, "bs-", label="Val acc")
plt.xlabel("epoch")
plt.ylabel("acc")
plt.legend()
- 使用
subplot
选择第二个子图。 - 使用
plot
函数分别绘制训练集和验证集每个 epoch 的准确率,train_process.train_acc_all
和train_process.val_acc_all
是对应的数据。 "ro-"
和"bs-"
是绘图的样式,“ro-” 表示红色圆点线,“bs-” 表示蓝色方块线。xlabel
和ylabel
设置 x 轴和 y 轴的标签。legend()
添加图例,标明每条曲线对应的标签。
- 保存和显示图像:
plt.savefig("train_process.png")
plt.show()
savefig
函数将当前图形保存为名为train_process.png
的图片文件。show
函数显示绘制好的图形窗口。