參考資料: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查看一些可視化統計
Tensoboard簡單使用方法:http://www.cnblogs.com/huangshiyu13/p/7562990.html
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
