深度學習技巧:如何顯示多個模型的acc和loss曲線?

好記性不如爛筆頭,純粹爲自己的學習生活記錄點什麼!

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/1_nOZD3IKX_9fIyF7hHG8cQ

今天就寫到這裏,好記性不如爛筆頭,加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章