閱讀72 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《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所示。

e39fa518df731a4c30db8212cf6c0483825f0763

圖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次)。

2c6d282cd0765841de91facd3e0bb6a36360d246

圖3-14

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

f4b1635449d65c96c59ad22c75af6b40703bad43

圖3-15

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

0254b50c6b52513ed5b3475ffbdda18fcc4d87e5

圖3-16

3.2.3 AUDIO麵板
AUDIO麵板是展示訓練過程中處理的音頻數據。這裏暫時沒有找到合適的例子,讀者了解即可。

3.2.4 GRAPHS麵板
GRAPHS麵板是對理解神經網絡結構最有幫助的一個麵板,它直觀地展示了數據流圖。圖 3-17 所示界麵中節點之間的連線即為數據流,連線越粗,說明在兩個節點之間流動的張量(tensor)越多。

294c2446545d659cf82c3fb394d0730fb8b2982b

圖3-17

在GRAPHS麵板的左側,可以選擇迭代步驟。可以用不同Color(顏色)來表示不同的Structure(整個數據流圖的結構),或者用不同Color來表示不同Device(設備)。例如,當使用多個GPU時,各個節點分別使用的GPU不同。

當我們選擇特定的某次迭代(如第899次)時,可以顯示出各個節點的Compute time(計算時間)以及Memory(內存消耗),如圖3-18所示。

3581a708ce67a14b9d07bf08887bc133c1ab9213

圖3-18

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

160530ba3ebfacdcd1b9b4e1cbeae0d9c38ee4e9

圖3-19

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

7cb72d3a35f839bc8e1130210a79f3e5f409cc25

圖3-20

3.2.7 EMBEDDINGS麵板
EMBEDDINGS麵板在MNIST這個示例中無法展示,在3.3節中我們會用Word2vec例子來看一下這個麵板的詞嵌入投影儀。

最後更新:2017-05-24 13:31:09

  上一篇:go  芬蘭|不隻有諾基亞和憤怒的小鳥
  下一篇:go  《TensorFlow技術解析與實戰》——第3章 可視化TensorFlow 3.1PlayGround