tensorflow中使用tensorboard視覺化結果
1. 將資料與summary繫結
在tensorflow中為了能夠將資料顯示出來,必須先將summary operation與資料關聯起來,使得後面能夠將這些資料寫入 event files。因為tensorboard的視覺化就是根據這些eventfiles的內容來視覺化的。比較典型的兩個summary operation是scalar_summary()和histogram_summary(),這兩個分別是作用與標量資料和tensor資料。這兩個函式的第一個引數該資料在結果顯示時的名稱和對應要繫結的資料
2. 通過tf.merge_all_summaries()函式來建立一個節點來收集資料
因為tensorflow的每個node都要通過session的run函式顯示的呼叫了後才會執行,或者有別的被run呼叫的函式依賴這個節點該節點才會執行。而summary節點都是收集資料,不會有什麼節點依賴於它。所以我們要手動通過run函式呼叫它,而這種節點的數目很多,如果我們通過手工一個個呼叫很麻煩,所以tensorflow提供了一個merger_all_summaries()的函式用來建立一個節點來收集所有summary資料生成符合protobuf格式的資料,避免我們一次次的呼叫。
3.通過建立tf.train.SummaryWriter()來將summary寫入eventfiles
tf.train.SummaryWriter()的建構函式需要一個logdir用來指定eventfiles的儲存位置。然後通過指定的次數通過其的add_summary()方法來將summary寫入eventfiles。
4.通過指令碼tensorboard –logdir=path/to/log-directory來執行tensorboard,接著通過在瀏覽器中輸入 localhost:6006檢視視覺化結果
5.在建立SummaryWriter時如果傳遞了session.graph則可以在tensorboard中視覺化graph,通過視覺化的圖我們可以更好的理解我們網路,已經檢視網路結構是否有問題
在使用這個功能時,由於網路的節點的數目可能特別的龐大無法在一個網路中清晰的顯示出來,所以有必要採取將節點分層的,預設只顯示頂層節點,然後通過互動操作不斷的深入各個節點,檢視它的子節點情況。而實現該功能的一個關鍵是使用with tf.name_scope(name) as scope:這個語句,然後該語句下的定義的變數的名稱會自動的加上name/這個字首。如:
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