好记性不如烂笔头,纯粹为自己的学习生活记录点什么!

tensorboard 同时显示多个模型准确率和损失率
tensorboard 同时显示多个模型的accuracy和loss

Found more than one graph event per run, or there was a metagraph containing a graph_def, as well as one or more graph events. Overwriting the graph with the newest event.

在利用TensorFlow模型训练过程中,我们都知道使用tensorboard进行训练过程中的acc和loss可视化,便于我们观察训练过程中是否出现问题。但是训练的时候我常发现只能在一个loss曲线图中显示一个loss,本文将给出两种方法,如何显示多个模型的训练acc和loss,便于对比分析!!

先上图!省的你们不知道实现的结果是啥!
在这里插入图片描述

错误提示

本文的初衷都是从下面这个错误开始!

Found more than one graph event per run, or there was a metagraph containing a graph_def, as well as one or more graph events.  Overwriting the graph with the newest event.

比如,你在log文件下存在两个events.out.tfevents.******,目录如下:

-logs
	--events.out.tfevents.1
	--events.out.tfevents.2

当命令行模式cd到logs下,执行

tensorboard --logdir=./

表示在当前目录下显示tensorboard,这时就会报Found more than one graph event per run…错误,这是因为tensorboard运行目录下必须只能有一个tfevents文件。

Tensorboard

那么如何在一个tensorboard中显示多个模型的结果呢?
直奔主题!!
首先你的目录格式必须如下:

-logs
	--1
		---events.out.tfevents.1
	--2
		---events.out.tfevents.2
	--3
		---events.out.tfevents.3
	........
	........

接下来你要在命令行中cd到logs文件夹下,然后在执行tensorboard命令:
命令行执行注意事项

logs文件夹下存在7个子文件夹,每一个子文件夹下只保存一个tfevents文件!!!

ctrl+鼠标左键单击http://xxxx:6006,打开浏览器如下图:
一个tensorboard同时显示多个模型的结果
bingo!!!搞定了 !!!
左下角显示的就是logs下的各个文件夹名称,并自动分配不同颜色,可以单击选中或不选中其中任何几个让其显示或不显示,我简单演示了一下,取消1的效果。

手撸代码实现

tensorboard有一个很大的问题是,无法添加标注,这个图没法放在论文中,这可咋整捏?
直接开干!
首先我们要获取数据,数据来源于tensorboard中
在这里插入图片描述
要确保你想要下载的数据,你已经选中,否则是无法下载的!点击上图中的箭头所指,弹出如下:
在这里插入图片描述
选中你想要保存的模型loss数据,然后点击CSV,则弹出保存对话框,你可以任意命名。依次全部下载,即可完成模型训练数据!
假设你保存的数据名称如下:

--run_2-tag-loss.csv
--run_3-tag-loss.csv
--run_4-tag-loss.csv

接下来,直接上代码了!!


import pandas as pd
import matplotlib.pyplot as plt
from io import StringIO

net2 = pd.read_csv('run_2-tag-loss.csv', usecols=['Step', 'Value'])
plt.plot(net2.Step, net2.Value, lw=1.5, label='Net-2', color='pink')
net3 = pd.read_csv('run_3-tag-loss.csv', usecols=['Step', 'Value'])
plt.plot(net3 .Step, net3 .Value, lw=1.5, label='Net-3', color='green')
net4 = pd.read_csv('run_4-tag-loss.csv', usecols=['Step', 'Value'])
plt.plot(net4 .Step, net4 .Value, lw=1.5, label='Net-4', color='yellow')

plt.legend(loc=0)
plt.show()

执行结果,如下图:
在这里插入图片描述

代码

你需要的代码在这里,包括数据:

https://pan.baidu.com/s/1wx_nyX4x2zGvD3QKHLXtkw

另外,再给一个链接,机器学习/深度学习/图像处理/数学理论/编程等相关书籍汇总,相信你会需要的:

链接: https://pan.baidu.com/s/19VSvWwfxhpEALoPRfhTdhg 提取码: cppv

今天就写到这里,好记性不如烂笔头,加油!

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐