當使用Tensorflow訓練大量深層的神經網絡時,我們希望去跟蹤神經網絡的整個訓練過程中的信息,比如迭代的過程中每一層參數是如何變化與分布的,比如每次循環參數更新后模型在測試集與訓練集上的準確率是如何的,比如損失值的變化情況,等等。如果能在訓練的過程中將一些信息加以記錄并可視化得表現出來,是不是對我們探索模型有更深的幫助與理解呢?
Tensorflow官方推出了可視化工具Tensorboard,可以幫助我們實現以上功能,它可以將模型訓練過程中的各種數據匯總起來存在自定義的路徑與日志文件中,然后在指定的web端可視化地展現這些信息。
1. Tensorboard介紹
1.1 Tensorboard的數據形式
Tensorboard可以記錄與展示以下數據形式:
(1)標量Scalars
(2)圖片Images
(3)音頻Audio
(4)計算圖Graph
(5)數據分布Distribution
(6)直方圖Histograms
(7)嵌入向量Embeddings
1.2 Tensorboard的可視化過程
(1)首先肯定是先建立一個graph,你想從這個graph中獲取某些數據的信息
(2)確定要在graph中的哪些節點放置summary operations以記錄信息
使用tf.summary.scalar記錄標量
使用tf.summary.histogram記錄數據的直方圖
使用tf.summary.distribution記錄數據的分布圖
使用tf.summary.image記錄圖像數據
….
(3)operations并不會去真的執行計算,除非你告訴他們需要去run,或者它被其他的需要run的operation所依賴。而我們上一步創建的這些summary operations其實并不被其他節點依賴,因此,我們需要特地去運行所有的summary節點。但是呢,一份程序下來可能有超多這樣的summary 節點,要手動一個一個去啟動自然是及其繁瑣的,因此我們可以使用tf.summary.merge_all去將所有summary節點合并成一個節點,只要運行這個節點,就能產生所有我們之前設置的summary data。
(4)使用tf.summary.FileWriter將運行后輸出的數據都保存到本地磁盤中
(5)運行整個程序,并在命令行輸入運行tensorboard的指令,之后打開web端可查看可視化的結果
2.Tensorboard使用案例
不出所料呢,我們還是使用最基礎的識別手寫字體的案例~
不過本案例也是先不去追求多美好的模型,只是建立一個簡單的神經網絡,讓大家了解如何使用Tensorboard。
2.1 導入包,定義超參數,載入數據
(1)首先還是導入需要的包:
from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport argparseimport sysimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data
(2)定義固定的超參數,方便待使用時直接傳入。如果你問,這個超參數為啥要這樣設定,如何選擇最優的超參數?這個問題此處先不討論,超參數的選擇在機器學習建模中最常用的方法就是“交叉驗證法”。而現在假設我們已經獲得了最優的超參數,設置學利率為0.001,dropout的保留節點比例為0.9,最大循環次數為1000.
新聞熱點
疑難解答