1. 程式人生 > >tf列印除錯資訊方法

tf列印除錯資訊方法

參考資料:https://wookayin.github.io/tensorflow-talk-debugging

幾種常用方法:

1.通過Session.run()獲取變數的值

2.利用Tensorboard檢視一些視覺化統計

3.使用tf.Print()和tf.Assert()列印變數

4.使用Python的debug工具: ipdb, pudb

5.利用tf.py_func()向圖中插入自定義的列印程式碼, tdb

6.使用官方debug工具: tfdbg

複習:

tensorflow是通過先建圖再執行的方式進行執行,這就使得我們寫在圖建立過程中的輸出語句在圖執行的時候並不能得到執行,從而使得除錯困難. 我們想在執行過程中,對訓練的一些變數進行追蹤和列印,對一些錯誤進行輸出分析,下面介紹幾種在tensorflow中進行debug的方法.

詳細介紹:

1.通過Session.run()獲取變數的值

一個簡單的例子:

 

優點:簡單易行

缺點:必須要在圖中保持需要觀察的變數,必須要進行一次完整的執行

比如我們要獲取各個層的輸出,會變得很繁瑣:

可以通過詞典或者新建一個類來改善這一情況:

詞典:

類:

2.利用Tensorboard檢視一些視覺化統計

3.使用tf.Print()和tf.Assert()列印變數

一個簡單例子:

在前7次迭代中,它會輸出預測的label,如下圖所示:

缺點:函式過於簡單,沒法在滿足一定條件下進行輸出,或者隔多少次迭代才進行一次輸出.

這個函式在condition等於False的時候進行輸出data的值,並且丟擲異常,summarize決定輸出多少變數值

使用方法:

或者可以:

或者把所有的Assert操作加入collection:

 官方也提供了一些assert相關的函式: https://www.tensorflow.org/versions/r0.12/api_docs/python/check_ops.html#asserts-and-boolean-checks

4.使用Python的debug工具: ipdb, pudb

5.利用tf.py_func()向圖中插入自定義的列印程式碼

簡單例子:

另一個例子:

一個第三方debug工具: https://github.com/ericjang/tdb

 

6.使用官方debug工具: tfdbg