TensorFlow官方文檔TensorBoard: 圖表可視化

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了。

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

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

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

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

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

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

 

TensorFlow 官方文檔中文版 TensorFlow 官方文檔中文版
節點conv_1被連接到save,注意其右邊save節點圖標。 save has a high degree, 並會作爲從屬節點出現,與conv_1的連接作爲一個節點圖標顯示在其左邊。爲了繼續減少雜亂,既然save有很多連接,我們則只顯示前5個,而把其餘的縮略爲... 12 more

 

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

 

TensorFlow 官方文檔中文版 TensorFlow 官方文檔中文版
一個節點序列的摺疊視圖。 視圖的一小塊, 雙擊後展開。

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

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

 

交互

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

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

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

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

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

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

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

TensorFlow 官方文檔中文版 TensorFlow 官方文檔中文版
結構視圖:灰色節點的結構是唯一的。橙色的conv1conv2節點有相同的結構, 其他顏色的節點也類似。 設備視圖:名稱域根據其中的操作節點的設備片件來着色,在此紫色代表GPU,綠色代表CPU。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章