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

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

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

完事!

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

  • 30
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值