TensorBoard:可視化學習

您將使用TensorFlow進行的計算 - 如訓練大量的深度神經網絡 - 可能會非常復雜和令人困惑。 為了便于理解,調試和優化TensorFlow程序,我們包含了一套名為TensorBoard的可視化工具。 您可以使用TensorBoard來顯示您的TensorFlow圖形,繪制關于圖形執行的量化指標,并顯示通過它的圖像數據。 當TensorBoard全部配置時,看起來像這樣:



本教程旨在讓您開始使用簡單的TensorBoard。 還有其他資源可用!TensorBoard的GitHub有更多關于TensorBoard使用的信息,包括提示和技巧以及調試信息。

序列化數據

TensorBoard通過讀取TensorFlow事件文件進行操作,TensorFlow事件文件包含運行TensorFlow時所生成的摘要數據。 以下是TensorBoard中摘要數據的一般生命周期。

首先,創建您希望從中收集摘要數據的TensorFlow graph,然后決定使用摘要操作(summary operations)注解哪些節點。

例如,假設您正在訓練用于識別MNIST數字的卷積神經網絡。 您想記錄學習率隨時間的變化,以及目標函數如何變化。 通過將tf.summary.scalar分別附加到輸出learning rate和loss的節點來收集這些信息。 然后,給每個scalar_summary總結一個有意義的標簽,如“learning rate”或“loss function”。

也許你也想看到一個指定層的激活分布,或梯度或權重的分布。 通過將tf.summary.histogram附加到梯度輸出和權重的變量來收集這些數據。

有關所有摘要操作(summary operations)的詳細信息,請查看有關摘要操作(summary operations)的文檔。

在運行之前,TensorFlow中的操作不會執行任何操作,或者依賴于其輸出的操作。 我們剛剛創建的摘要節點是graph之外的:您當前正在運行的所有操作都不依賴于它們。 所以,為了生成摘要,我們需要運行所有這些匯總節點。 手工管理它們會很麻煩,所以使用tf.summary.merge_all將它們組合成一個單獨的操作來生成所有的匯總數據。

然后,您可以運行合并的摘要操作,該操作將在給定的步驟中生成包含所有摘要數據的序列化的Summary?protobuf對象。 最后,為了將這個總結數據寫入磁盤,將總結的protobuf傳遞給tf.summary.FileWriter

FileWriter在其構造函數中使用了logdir - 這個logdir非常重要,它是所有事件將被寫出的目錄。 另外,FileWriter可以選擇在其構造函數中使用Graph。 如果它接收到一個Graph對象,那么TensorBoard會將您的圖形與張量形狀信息一起可視化。 這將使您更好地理解圖中流動的情況:請參閱張量形狀信息(Tensor shape information)。

現在你已經修改了你的圖形,并有一個FileWriter,你已經準備好開始運行你的網絡! 如果你愿意,你可以每一步都運行合并的摘要操作,并記錄大量的訓練數據。 雖然這可能是比你需要更多的數據。 相反,請考慮每n步運行合并的摘要操作。

下面的代碼示例是對簡單MNIST教程的修改,我們在其中添加了一些summary操作,并且每十步執行一次。 如果你運行這個程序,然后啟動tensorboard --logdir=/tmp/tensorflow/mnist,你將可以看到統計數據,例如訓練過程中權重或準確率的變化。 下面的代碼是摘錄; 完整的源代碼在這里

(代碼略,格式太亂,看完整代碼吧)

在初始化FileWriters之后,我們必須在我們訓練和測試模型時將sumamries添加到FileWriters

(代碼略,格式太亂,看完整代碼吧)

您現在已經開始使用TensorBoard將這些數據可視化了。

啟動TensorBoard

要運行TensorBoard,使用下面的命令(或者python -m tensorboard.main)

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

其中logdir指向FileWriter序列化其數據的目錄。 如果此logdir目錄包含子目錄,里面是不同的序列化數據,則TensorBoard將可視化所有這些數據。 一旦TensorBoard啟動,瀏覽您的Web瀏覽器到localhost:6006以查看TensorBoard。

在看TensorBoard時,您會看到右上角的導航標簽。 每個選項卡代表一組可以可視化的序列化數據。

有關如何使用圖形選項卡可視化圖形的深入信息,請參閱TensorBoard:圖形可視化

有關TensorBoard的更多使用信息,請參閱TensorBoard的GitHub

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容