閱讀734 返回首頁    go 技術社區[雲棲]


TensorFlow教程之進階指南 3.4 TensorBoard: 圖表可視化

本文檔為TensorFlow參考文檔,本轉載已得到TensorFlow中文社區授權。



TensorFlow 圖表計算強大而又複雜,圖表可視化在理解和調試時顯得非常有幫助。 下麵是一個運作時的可式化例子。

一個TensorFlow圖表的可視化"一個TensorFlow圖表的可視化") 一個TensorFlow圖表的可視化。

為了顯示自己的圖表,需將 TensorBoard 指向此工作的日誌目錄並運行,點擊圖表頂部窗格的標簽頁,然後在左上角的菜單中選擇合適的運行。想要深入學習關於如何運行 TensorBoard 以及如何保證所有必要信息被記錄下來,請查看 Summaries 和 TensorBoard.

名稱域(Name scoping)和節點(Node)

典型的 TensorFlow 可以有數以千計的節點,如此多而難以一下全部看到,甚至無法使用標準圖表工具來展示。為簡單起見,我們為變量名劃定範圍,並且可視化把該信息用於在圖表中的節點上定義一個層級。默認情況下, 隻有頂層節點會顯示。下麵這個例子使用tf.name_scopehidden命名域下定義了三個操作:

import tensorflow as tf

with tf.name_scope('hidden') as scope:
  a = tf.constant(5, name='alpha')
  W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0), name='weights')
  b = tf.Variable(tf.zeros([1]), name='biases')

結果是得到了下麵三個操作名:

  • hidden/alpha
  • hidden/weights
  • hidden/biases

默認地,三個操作名會折疊為一個節點並標注為hidden。其額外細節並沒有丟失,你可以雙擊,或點擊右上方橙色的+來展開節點,然後就會看到三個子節點alphaweightsbiases了。

這有一個生動的例子,例中有一個更複雜的節點,節點處於其初始和展開狀態。

未展開的名稱域 展開的名稱域
頂級名稱域的初始視圖pool_1,點擊右上方橙色的+按鈕或雙擊節點來展開。 展開的pool_1名稱域視圖,點擊右上方橙色的-按鈕或雙擊節點來收起此名稱域。

通過名稱域把節點分組來得到可讀性高的圖表很關鍵的。如果你在構建一個模型,名稱域就可以用來控製可視化結果。你的名稱域越好,可視性就越好。

上麵的圖像例子說明了可視化的另一方麵, TensorFlow 圖表有兩種連接關係:數據依賴和控製依賴。數據依賴顯示兩個操作之間的tensor流程,用實心箭頭指示,而控製依賴用點線表示。在已展開的視圖(上麵的右圖)中,除了用點線連接的CheckNumericscontrol_dependency之外,所有連接都是數據依賴的。

還有一種手段用來簡化布局。大多數 TensorFlow 圖表有一部分節點,這部分節點和其他節點之間有很多連接。比如,許多節點在初始化階段可能會有一個控製依賴,而繪製所有init節點的邊緣和其依賴可能會創造出一個混亂的視圖。

為了減少混亂,可視化把所有 high-degree 節點分離到右邊的一個從屬區域, 而不會繪製線條來表示他們的邊緣。線條也不用來表示連接了,我們繪製了小節點圖標來指示這些連接關係。分離出從屬節點通常不會把關鍵信息刪除掉,因為這些節點和內構功能是相關的。

conv_1是主圖表的部分 save被抽出為從屬節點
節點conv_1被連接到save,注意其右邊save節點圖標。 save has a high degree, 並會作為從屬節點出現,與conv_1的連接作為一個節點圖標顯示在其左邊。為了繼續減少雜亂,既然save有很多連接,我們則隻顯示前5個,而把其餘的縮略為... 12 more

最後一個結構上的簡化法叫做序列折疊(series collapsing)。 序列基序(Sequential motifs)是擁有相同結構並且其名稱結尾的數字不同的節點,它們被折疊進一個單獨的節點塊(stack)中。對長序列網絡來說,序列折疊極大地簡化了視圖,對於已層疊的節點,雙擊會展開序列。

節點序列 展開的節點序列
一個節點序列的折疊視圖。 視圖的一小塊, 雙擊後展開。

最後,針對易讀性的最後一點要說到的是,可視化為常節點和摘要節點使用了特別的圖標,總結起來有下麵這些節點符號:

符號 意義
名稱域 High-level節點代表一個名稱域,雙擊則展開一個高層節點。
斷線節點序列 彼此之間不連接的有限個節點序列。
相連節點序列 彼此之間相連的有限個節點序列。
操作節點 一個單獨的操作節點。
常量節點 一個常量結點。
摘要節點 一個摘要節點。
數據流邊 顯示各操作間的數據流邊。
控製依賴邊 顯示各操作間的控製依賴邊。
引用邊 引用邊,表示出度操作節點可以使入度tensor發生變化。

交互

通過平移和縮放來導航圖表,點擊和拖動用於平移,滾動手勢用於縮放。雙擊一個節點或點擊其+按鈕來展開代表一組操作的名稱域。右下角有一個小地圖可以在縮放和平移時方便的改變當前視角。

要關閉一個打開的節點,再次雙擊它或點擊它的-按鈕,你也可以隻點擊一次來選中一個節點,節點的顏色會加深,並且會看到節點的詳情,其連接到的節點會在可視化右上角的詳情卡片顯現。

一個名稱域的詳情卡片 操作節點的詳情卡片
詳情卡片展示conv2名稱域的詳細信息,名稱域中操作節點的輸入和輸出被結合在一起,適用於不顯示屬性的名稱域。 詳情卡片展示DecodeRaw操作節點,除了輸入和輸出,卡片也會展示與當前節點相關的設備和屬性。

選擇對於 high-degree 節點的理解也很有幫助,選擇任意節點,則與它的其餘連接相應的節點也會選中,這使得在進行例如查看哪一個節點是否已保存等操作時非常容易。

點擊詳情卡片中的一個節點名稱時會選中該節點,必要的話,視角會自動平移以使該節點可見。

最後,使用圖例上方的顏色菜單,你可以給你的圖表選擇兩個顏色方案。默認的結構視圖下,當兩個 high-level 節點顏色一樣時,其會以相同的彩虹色彩出現,而結構唯一的節點顏色是灰色。還有一個視圖則展示了不同的操作運行於什麼設備之上。名稱域被恰當的根據其中的操作節點的設備片件來著色。

下圖是一張真實圖表的圖解:

按結構著色 按設備著色
結構視圖:灰色節點的結構是唯一的。橙色的conv1conv2節點有相同的結構, 其他顏色的節點也類似。 設備視圖:名稱域根據其中的操作節點的設備片件來著色,在此紫色代表GPU,綠色代表CPU。

最後更新:2017-08-22 16:08:53

  上一篇:go  LINUX 常用命令整理
  下一篇:go  TensorFlow教程之完整教程 2.7 字詞的向量表示