今天介绍个新技能,相信很多同学花费众多时间去训练模型,但是却没有提前编写绘制曲线图(loss曲线图,acc曲线图等)的代码,又得从头开始训练,耗费众多的时间,又或者虽然用了 Tensorboard, 但是又想把 train loss 和 val loss 画在一个图上,怎么办? 教程来了!
要注意的是必须要有 events.out.tfevents 文件, 如果没有这篇博客你可以滑过了,从头开始去训练吧!
下面讲解步骤:
第一步: 在 conda 环境下运行命令 tensorboard --logdir=events.out.tfevents文件路径,如下图:
第二步: 进入网址: http://localhost:6006/, 如下图所示。
第三步: 按如图所示步骤导出 csv 文件(即你每个epoch的loss, acc 等等):
下载出来的就是这样子的:
第四步: 愉快的编写代码绘图,直接上代码:
# -*- coding: utf-8 -*-
'''
Author: Unlabel
Date: 2020-10-09 20:52:19
LastEditTime: 2020-10-09 21:10:03
Description: 利用tf的 events.out.tfevents绘制训练的曲线图
FilePath: /plot_loss/plot.py
'''
import os
import pandas as pd
from matplotlib import pyplot as plt
def loss_visualize(epoch, tra_loss, val_loss):
plt.style.use("ggplot")
plt.figure()
plt.subplot(1, 1, 1)
plt.title("Epoch_Loss")
plt.plot(epoch, tra_loss, label='train_loss', color='r', line, marker='o')
plt.plot(epoch, val_loss, label='val_loss', line, color='b', marker='^')
plt.legend()
plt.xlabel('epoch')
plt.ylabel('loss')
plt.savefig(os.path.join(res_dir, 'loss.png'))
plt.show()
def read_value(train_df, val_df):
epoch = val_df['Step'].values
train_loss = train_df['Value']
val_loss = val_df['Value']
return epoch, train_loss, val_loss
if __name__ == "__main__":
root_dir = os.getcwd()
file_dir = os.path.join(root_dir, 'file')
res_dir = os.path.join(root_dir, 'results')
train_path = os.path.join(file_dir, '4_train_loss.csv')
val_path = os.path.join(file_dir, '4_val_loss.csv')
train_df = pd.read_csv(train_path)
val_df = pd.read_csv(val_path)
epoch, train_loss, val_loss = read_value(train_df, val_df)
loss_visualize(epoch, train_loss, val_loss)
绘出来的就是这个样子的:
完事!
觉得帮到你的,麻烦点个赞!谢谢大家!
文章
10.49W+人气
19粉丝
1关注
©Copyrights 2016-2022 杭州易知微科技有限公司 浙ICP备2021017017号-3 浙公网安备33011002011932号
互联网信息服务业务 合字B2-20220090