提问 发文

利用 Tensorflow 中 events.out.tfevents 文件绘制曲线图

微微菌

| 2024-03-14 11:06 444 0 0

 今天介绍个新技能,相信很多同学花费众多时间去训练模型,但是却没有提前编写绘制曲线图(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)


绘出来的就是这个样子的:




完事!

    觉得帮到你的,麻烦点个赞!谢谢大家!



本文为二次转载,如有侵权请联系删除。
收藏 0
分享
分享方式
微信

评论

游客

全部 0条评论

10603

文章

10.49W+

人气

19

粉丝

1

关注

官方媒体

轻松设计高效搭建,减少3倍设计改稿与开发运维工作量

开始免费试用 预约演示

扫一扫关注公众号 扫一扫联系客服

©Copyrights 2016-2022 杭州易知微科技有限公司 浙ICP备2021017017号-3 浙公网安备33011002011932号

互联网信息服务业务 合字B2-20220090

400-8505-905 复制
免费试用
微信社区
易知微-数据可视化
微信扫一扫入群