好記性不如爛筆頭,純粹爲自己的學習生活記錄點什麼!
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,打開瀏覽器如下圖:
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()
執行結果,如下圖:
代碼
你需要的代碼在這裏,包括數據:
另外,再給一個鏈接,機器學習/深度學習/圖像處理/數學理論/編程等相關書籍彙總,相信你會需要的:
今天就寫到這裏,好記性不如爛筆頭,加油!