可視化學習Tensorboard

可視化學習Tensorboard

TensorBoard 涉及到的運算,一般是在訓練龐大的深度神經網絡中出現的複雜而又難以理解的運算。爲了更方便 TensorFlow 程序的理解、調試與優化,發佈了一套叫作 TensorBoard 的可視化工具。你能夠用 TensorBoard 來展示你的 TensorFlow 圖像,繪製圖像生成的定量指標圖以及附加數據。python

 

數據序列化-events文件

TensorBoard 經過讀取 TensorFlow 的事件文件來運行。TensorFlow 的事件文件包括了你會在 TensorFlow 運行中涉及到的主要數據。事件文件的生成經過在程序中指定tf.summary.FileWriter存儲的目錄,以及要運行的圖git

tf.summary.FileWriter('/tmp/summary/test/', graph=default_graph)

  

啓動TensorBoard

要運行TensorBoard,請使用如下命令瀏覽器

tensorboard --logdir=path/to/log-directory

 

其中logdir指向其FileWriter序列化其數據的目錄。若是此logdir目錄包含從單獨運行中包含序列化數據的子目錄,則TensorBoard將可視化全部這些運行中的數據。一旦TensorBoard運行,瀏覽您的網頁瀏覽器localhost:6006來查看TensorBoard網絡

節點符號

下圖給出了節點符號以及意義:函數

 

咱們如下面代碼來詳細介紹一下整個主圖的結構:工具

import tensorflow as tf graph = tf.Graph() with graph.as_default(): with tf.name_scope("name1") as scope: a = tf.Variable([1.0,2.0],name="a") with tf.name_scope("name2") as scope: b = tf.Variable(tf.zeros([20]),name="b") c = tf.Variable(tf.ones([20]),name="c") with tf.name_scope("cal") as scope: d = tf.concat([b,c],0) e = tf.add(a,5) with tf.Session(graph=graph) as sess: tf.global_variables_initializer().run() # merged = tf.summary.merge_all()
    summary_writer = tf.summary.FileWriter('/tmp/summary/test/', graph=sess.graph) sess.run([d,e])

 

咱們定義了三個名稱域,分別爲name1,name2和cal,咱們能夠清晰的從圖中看出。學習

 

那麼全部的常數、變量或者操做都在對應的名稱域中,咱們能夠經過點擊加號或者減號來查看詳細內容。在name1中,有咱們定義的變量a,依賴於初始化,而且也有對應的張量的階。一樣在name2中,有變量b和c。圖中實線是咱們整個程序的數據流向邊。在cal名稱域中,有兩個運算操做,數據從前面兩個名稱域中流入。優化

通常來講,若是一個程序中名稱域利用的好,可使你的主圖的結構更加清晰。反之,則會顯得很是混亂spa

節點詳細信息scala

咱們每點擊一個節點在整個tensorboard右上角會出現節點的詳細信息。

 

上面會詳細列出節點的子節點數、屬性以及輸入輸出。

添加節點彙總操做

那麼tensorboard還提供了另外重要的功能,那就是追蹤程序中的變量以及圖片相關信息,也就是能夠一直觀察程序中的變量值的變化曲線首先在構建計算圖的時候一個變量一個變量蒐集,構建完後將這些變量合併而後在訓練過程當中寫入到事件文件中。

收集操做

  • tf.summary.scalar() 收集對於損失函數和準確率等單值變量
  • tf.summary.histogram() 收集高維度的變量參數
  • tf.summary.image() 收集輸入的圖片張量能顯示圖片

下面使用部分代碼,說明了如何去收集變量並寫入事件文件。

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_label, logits=y))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_label, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

tf.summary.scalar("loss",cross_entropy)

tf.summary.scalar("accuracy", accuracy)

tf.summary.histogram("W",W)

  

而後合併全部的變量,將這些信息一塊兒寫入事件文件中

# 合併
merged = tf.summary.merge_all()
summary_writer = tf.summary.FileWriter(FLAGS.summary_dir, graph=sess.graph)

# 運行
summary = sess.run(merged)

#寫入
summary_writer.add_summary(summary,i)

  

經過運行tensorboard,咱們能夠看見這樣的結果,很直觀的顯示了變量在訓練過程當中的變化過程。

 

 

相關文章
相關標籤/搜索