為了更方便的理解、調試和優化TF程式, 我們可以使用TensorBoard(視覺化工具)。 可以使用TensorBoard查看graph,繪製圖表執行過程中的定量指標。 TensorBoard是完全可配置的。
1 序列化資料(Serializing the data)到磁片
TensorBoard通過讀取TF事件檔進行操作, 該檔包含了在TF運行過程中產生的摘要資料(summary data)
首先創建從中要收集摘要資料的TF圖, 並決定圖中的哪些點(nodes)需要summary operations。 比如需要記錄隨時間進行, 學習率的變化和目標函數的改變。 我們可以分別將學習率輸出節點和損失輸出節點加上tf.summary.scalar操作。 並給每個scalar_summary一個有含義的標記, 如‘learning rate’和‘loss function’。
或者想看看特定層的啟動函數的分佈, 或梯度和權重的分佈。
所有的summary operations:
tf.summary.tensor_summarytf.summary.scalartf.summary.histogramtf.summary.audiotf.summary.imagetf.summary.mergetf.summary.merge_allClass for writing Summaries
tf.summary.FileWritertf.summary.FileWriterCache為了產生這些摘要資料, 我們需要運行這些summary nodes。 單獨管理這些節點比較麻煩, 因此使用tf.summary.merge_all將它們合併為一個單獨的操作, 來產生所有的摘要資料。 最後通過tf.summary.FileWriter將摘要資料寫到磁片。
手寫字體識別例子的原始程式碼:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py
其中程式的最後一段:
parser.add_argument('--data_dir', type=str, default='/tmp/tensorflow/mnist/input_data', help='Directory for storing input data') parser.add_argument('--log_dir', type=str, default='/tmp/tensorflow/mnist/logs/mnist_with_summaries', help='Summaries log directory')注:上面代碼中路徑的寫法, 絕對路徑為該python檔所在的磁片根路徑+default指定的路徑。 比如該python在C:\XXX\XXX, 則default='C:/tmp/tensorflow/mnist/logs/mnist_with_summaries'
可以在程式中根據需要改為自訂的路徑如:
default='C:\\TMP\\TF\\MNIST_data' (或者default='C:/TMP/TF/MNIST_data') default='C:\\TMP\\TF\\logs\\mnist_with_summaries' (或者default='C:/TMP/TF/logs/mnist_with_summaries')或者在命令列運行程式時, 指定自訂路徑如:
python xx.py --data_dir=C:\\TMP\\TF\\MNIST_data --log_dir=C:\\TMP\\TF\\logs\\mnist_with_summaries (或者python xx.py --data_dir=C:/TMP/TF/MNIST_data --log_dir=C:/TMP/TF/logs/mnist_with_summaries)2 啟動TensorBoard
在命令列運行如下命令:tensorboard --logdir=path/to/log-directory
在本例中:
tensorboard --logdir=C:/TMP/TF/logs/mnist_with_summaries --debug (或者tensorboard --logdir=/TMP/TF/logs/mnist_with_summaries --debug)注意:tensorborad的啟動命令的根目錄需要和日誌的根目錄保持一致。
在流覽器中輸入位址localhost:6006
可以看到有7大模組:
SCALARSIMAGESAUDIOGRAPHSDISTRIBUTIONSHISTOGRAMSEMBEDDINGS