《TensorFlow技術解析與實戰》——第3章 可視化TensorFlow 3.2TensorBoard
本節書摘來自異步社區《TensorFlow技術解析與實戰》一書中的第3章,第3.2節,作者李嘉璿,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
第3章 可視化TensorFlow
3.2 TensorBoard
TensorBoard是TensorFlow自帶的一個強大的可視化工具,也是一個Web應用程序套件。TensorBoard目前支持7種可視化,即SCALARS、IMAGES、AUDIO、GRAPHS、DISTRIBUTIONS、HISTOGRAMS和EMBEDDINGS。這7種可視化的主要功能如下。
SCALARS:展示訓練過程中的準確率、損失值、權重/偏置的變化情況。
IMAGES:展示訓練過程中記錄的圖像。
AUDIO:展示訓練過程中記錄的音頻。
GRAPHS:展示模型的數據流圖,以及訓練在各個設備上消耗的內存和時間。
DISTRIBUTIONS:展示訓練過程中記錄的數據的分布圖。
HISTOGRAMS:展示訓練過程中記錄的數據的柱狀圖。
EMBEDDINGS:展示詞向量(如Word2vec)後的投影分布。
TensorBoard通過運行一個本地服務器,來監聽6006端口。在瀏覽器發出請求時,分析訓練時記錄的數據,繪製訓練過程中的圖像。在9.3節的MNIST示例中,會逐一講解TensorBoard的圖像繪製,讓讀者更好地了解訓練的過程中發生了什麼。本節我們就先看一下TensorBoard能夠繪製出哪些東西。
TensorBoard的可視化界麵如圖3-13所示。

圖3-13
從圖3-13中可以看到,在標題處有上述幾個可視化麵板,下麵通過一個示例,分別介紹這些可視化麵板的功能。
這裏,我們運行手寫數字識別的入門例子,如下:
python tensorflow-1.1.0/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py
然後,打開TensorBoard麵板:
tensorboard –logdir=/tmp/mnist/logs/mnist_with_summaries
這時,輸出:
Starting TensorBoard 39 on port 6006
(You can navigate to https://192.168.0.101:6006)
我們就可以在瀏覽器中打開https://192.168.0.101:6006,查看麵板的各項功能。
3.2.1 SCALARS麵板
SCALARS麵板的左邊是一些選項,包括Split on undercores(用下劃線分開顯示)、Data downloadlinks(數據下載鏈接)、Smoothing(圖像的曲線平滑程度)以及Horizontal Axis(水平軸)的表示,其中水平軸的表示分3種(STEP代表迭代次數,RELATIVE代表按照訓練集和測試集的相對值,WALL代表按照時間),如圖3-14左邊所示。圖3-14右邊給出了準確率和交叉熵損失函數值的變化曲線(迭代次數是1000次)。

圖3-14
SCALARS麵板中還繪製了每一層的偏置(biases)和權重(weights)的變化曲線,包括每次迭代中的最大值、最小值、平均值和標準差,如圖3-15所示。

圖3-15
3.2.2 IMAGES麵板
圖3-16展示了訓練數據集和測試數據集經過預處理後圖片的樣子。

圖3-16
3.2.3 AUDIO麵板
AUDIO麵板是展示訓練過程中處理的音頻數據。這裏暫時沒有找到合適的例子,讀者了解即可。
3.2.4 GRAPHS麵板
GRAPHS麵板是對理解神經網絡結構最有幫助的一個麵板,它直觀地展示了數據流圖。圖 3-17 所示界麵中節點之間的連線即為數據流,連線越粗,說明在兩個節點之間流動的張量(tensor)越多。

圖3-17
在GRAPHS麵板的左側,可以選擇迭代步驟。可以用不同Color(顏色)來表示不同的Structure(整個數據流圖的結構),或者用不同Color來表示不同Device(設備)。例如,當使用多個GPU時,各個節點分別使用的GPU不同。
當我們選擇特定的某次迭代(如第899次)時,可以顯示出各個節點的Compute time(計算時間)以及Memory(內存消耗),如圖3-18所示。

圖3-18
3.2.5 DISTRIBUTIONS麵板
DISTRIBUTIONS麵板和接下來要講的HISTOGRAMS麵板類似,隻不過是用平麵來表示來自特定層的激活前後、權重和偏置的分布。圖3-19展示的是激活之前和激活之後的數據分布。

圖3-19
3.2.6 HISTOGRAMS麵板
HISTOGRAMS主要是立體地展現來自特定層的激活前後、權重和偏置的分布。圖3-20展示的是激活之前和激活之後的數據分布。

圖3-20
3.2.7 EMBEDDINGS麵板
EMBEDDINGS麵板在MNIST這個示例中無法展示,在3.3節中我們會用Word2vec例子來看一下這個麵板的詞嵌入投影儀。
最後更新:2017-05-24 13:31:09