(新手上路,如果有不對的地方,望指正。另外有沒有小伙伴一起學習交流啊?)
tensorboard為tensorflow提供了可視化,它的重要性不言而喻。
tensorboard是通過讀取events files來顯示的,events file則包含在圖計算時生成的summary data。
-
1 tf.summary.scalar('mean', mean) 2 tf.summary.histogram('histogram', var)
1.summary data
某個summary操作原型:
tf.summary.scalar(name, tensor, collections=None)
這些summary的操作都是對某個tensor 產生單個的summary protocol buffer,是一種能被tensorboard讀取的格式。 Summaries provide a way to export condensed information about a model, which is then accessible in tools such as TensorBoard .summary的操作對於整個圖來說相當於是外設,因為tensorflow是由結果驅動的,而圖的結果並不依賴於summary操作,所以summary操作需要被run。整個圖經常需要檢測許許多多的值,也就是許多值需要summary operation,一個個去run來啟動太麻煩了,tensorflow為我們提供了這個函數:
-
merged=tf.summary.merge_all(key=tf.GraphKeys.SUMMARIES) #Merges all summaries collected in the default graph.
把圖中所有的summary數據合並在一起,一個run就能啟動所有的summary operations。像這樣:
-
summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
btw也有單獨merge函數。tensorboard是從磁盤中讀events files的。tensorflow用一個 tensorflow.summary.FileWriter將圖 運行得到的summary 數據寫到磁盤里。FileWriter的構造器包含一個logdir也就是summary data寫到的位置,以及可選的圖。
-
train_writer = tf.summary.FileWriter(FLAGS.summaries_dir +'/train', sess.graph)
把每一次run的信息和得到的數據加到writer里面
-
1 train_writer.add_run_metadata(run_metadata, 'step%03d'% i) 2 train_writer.add_summary(summary, i)
最后把writer關掉,大功告成。
-
1 train_writer.close()
2.tensorboard
上面的步驟成功之后,events file就躺在你磁盤上logdir位置上了。在命令行鍵入tensorboard --logdir=path/to/files我的logdir是/tmp/mnist_logs/train,我的代碼就是
在瀏覽器里打開,localhost:6006
就這樣可以看到各個數據的變化情況。遇到的bug:在火狐瀏覽器中event的一片黑,換成Google自家chrome瀏覽器就OK了