TensorFlow教程之進階指南 3.3 TensorBoard:可視化學習
本文檔為TensorFlow參考文檔,本轉載已得到TensorFlow中文社區授權。
TensorBoard:可視化學習
TensorBoard 涉及到的運算,通常是在訓練龐大的深度神經網絡中出現的複雜而又難以理解的運算。
為了更方便 TensorFlow 程序的理解、調試與優化,我們發布了一套叫做 TensorBoard 的可視化工具。你可以用 TensorBoard 來展現你的 TensorFlow 圖像,繪製圖像生成的定量指標圖以及附加數據。
當 TensorBoard 設置完成後,它應該是這樣子的:
數據序列化
TensorBoard 通過讀取 TensorFlow 的事件文件來運行。TensorFlow 的事件文件包括了你會在 TensorFlow 運行中涉及到的主要數據。下麵是 TensorBoard 中匯總數據(Summary data)的大體生命周期。
首先,創建你想匯總數據的 TensorFlow 圖,然後再選擇你想在哪個節點進行匯總(summary)操作。
比如,假設你正在訓練一個卷積神經網絡,用於識別 MNISt 標簽。你可能希望記錄學習速度(learning rate)的如何變化,以及目標函數如何變化。通過向節點附加scalar_summary操作來分別輸出學習速度和期望誤差。然後你可以給每個 scalary_summary 分配一個有意義的 標簽
,比如 'learning rate'
和 'loss function'
。
或者你還希望顯示一個特殊層中激活的分布,或者梯度權重的分布。可以通過分別附加 histogram_summary運算來收集權重變量和梯度輸出。
所有可用的 summary 操作詳細信息,可以查看summary_operation文檔。
在TensorFlow中,所有的操作隻有當你執行,或者另一個操作依賴於它的輸出時才會運行。我們剛才創建的這些節點(summary nodes)都圍繞著你的圖像:沒有任何操作依賴於它們的結果。因此,為了生成匯總信息,我們需要運行所有這些節點。這樣的手動工作是很乏味的,因此可以使用tf.merge_all_summaries來將他們合並為一個操作。
然後你可以執行合並命令,它會依據特點步驟將所有數據生成一個序列化的Summary
protobuf對象。最後,為了將匯總數據寫入磁盤,需要將匯總的protobuf對象傳遞給tf.train.Summarywriter。
SummaryWriter
的構造函數中包含了參數 logdir。這個 logdir 非常重要,所有事件都會寫到它所指的目錄下。此外,SummaryWriter
中還包含了一個可選擇的參數 GraphDef
。如果輸入了該參數,那麼 TensorBoard 也會顯示你的圖像。
現在已經修改了你的圖,也有了 SummaryWriter
,現在就可以運行你的神經網絡了!如果你願意的話,你可以每一步執行一次合並匯總,這樣你會得到一大堆訓練數據。這很有可能超過了你想要的數據量。你也可以每一百步執行一次合並匯總,或者如下麵代碼裏示範的這樣。
merged_summary_op = tf.merge_all_summaries()
summary_writer = tf.train.SummaryWriter('/tmp/mnist_logs', sess.graph)
total_step = 0
while training:
total_step += 1
session.run(training_op)
if total_step % 100 == 0:
summary_str = session.run(merged_summary_op)
summary_writer.add_summary(summary_str, total_step)
現在已經準備好用 TensorBoard 來可視化這些數據了。
啟動TensorBoard
輸入下麵的指令來啟動TensorBoard
python tensorflow/tensorboard/tensorboard.py --logdir=path/to/log-directory
這裏的參數 logdir
指向 SummaryWriter
序列化數據的存儲路徑。如果logdir
目錄的子目錄中包含另一次運行時的數據,那麼 TensorBoard 會展示所有運行的數據。一旦 TensorBoard 開始運行,你可以通過在瀏覽器中輸入 localhost:6006
來查看 TensorBoard。
如果你已經通過pip安裝了 TensorBoard,你可以通過執行更為簡單地命令來訪問 TensorBoard
tensorboard --logdir=/path/to/log-directory
進入 TensorBoard 的界麵時,你會在右上角看到導航選項卡,每一個選項卡將展現一組可視化的序列化數據集 。對於你查看的每一個選項卡,如果 TensorBoard 中沒有數據與這個選項卡相關的話,則會顯示一條提示信息指示你如何序列化相關數據。
最後更新:2017-08-22 16:04:53