常見錯誤類型,非數字(nan)、無限值(inf)。tfdbg指令行界面(command line interface,CLI)。
先直接執行。
準确率第一次訓練上千,後面保持較低水準。
TensorFlow Debugger,在每次調用run()前後基于終端使用者界面(UI),控制執行、檢查圖内部狀态。
張量值注冊過濾器has_inf_on_nan,判斷圖中間張量是否有nan、inf值。
開啟調試模式(debug)。
運作開始UI(run-start UI),在tfdbg>後輸入互動式指令,run()進入運作結束後UI(run-end UI)。連續運作10次
找出圖形第一個nan或inf值
第一行灰底字表示tfdbg在調用run()後立即停止,生成指定過濾器has_inf_or_nan中間張量。第4次調用run(),36個中間張量包含inf或nan值。首次出現在cross_entropy/Log:0。單擊圖中cross_entropy/Log:0,單擊下劃線node_info菜單項,看節點輸入張量,是否有0值。
用ni指令-t标志追溯
問題代碼
修改,對tf.log輸入值裁剪
遠端調試。tfdbg offline_analyzer。設定本地、遠端機器能通路共享目錄。debug_utils.watch_graph函數設定運作時參數選項。運作session.run(),中間張量、運作時圖像轉儲到共享目錄。本地終端用tfdbg offline_analyzer加載、檢查共享目錄資料。
源碼
或用會話包裝器函數DumpingDebugWrapperSession在共享目錄産生訓練累積檔案。
參考資料:
《TensorFlow技術解析與實戰》
歡迎推薦上海機器學習工作機會,我的微信:qingxingfengzi