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

    今天介绍个新技能,相信很多同学花费众多时间去训练模型,但是却没有提前编写绘制曲线图(loss曲线图,acc曲线图等)的代码,又得从头开始训练,耗费众多的时间,又或者虽然用了 Tensorboard, 但是又想把 train loss 和 val loss 画在一个图上,怎么办? 教程来了!

    要注意的是必须要有 events.out.tfevents 文件, 如果没有这篇博客你可以滑过了,从头开始去训练吧!

下面讲解步骤:

    第一步: 在 conda 环境下运行命令 tensorboard --logdir=events.out.tfevents文件路径,如下图:
利用 Tensorflow 中 events.out.tfevents 文件绘制曲线图_第1张图片
    第二步: 进入网址: http://localhost:6006/, 如下图所示。
利用 Tensorflow 中 events.out.tfevents 文件绘制曲线图_第2张图片
    第三步: 按如图所示步骤导出 csv 文件(即你每个epoch的loss, acc 等等):
利用 Tensorflow 中 events.out.tfevents 文件绘制曲线图_第3张图片
利用 Tensorflow 中 events.out.tfevents 文件绘制曲线图_第4张图片
下载出来的就是这样子的:
利用 Tensorflow 中 events.out.tfevents 文件绘制曲线图_第5张图片
    第四步: 愉快的编写代码绘图,直接上代码:

#  -*- 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)

绘出来的就是这个样子的:
利用 Tensorflow 中 events.out.tfevents 文件绘制曲线图_第6张图片
完事!

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

你可能感兴趣的:(其他,tensorflow,深度学习,python)