VS code調試與修改TensorFlow源代碼

TensorFlow是目前使用最廣泛的深度學習框架,網上關於如何進行TensorFlow編程的教程或者博客比比皆是。然而,對於那些希望瞭解TensorFlow內部如何實現,或者是希望自定義修改TensorFlow內核的朋友來說,搜索相關的內容卻很難找到有幫助的教程或者博客,不論是中文還是外文。筆者去年花費好幾個月對如何調試TensorFlow源代碼,再到如何修改TensorFlow內核C++庫文件,最後自定義TensorFlow內部的Tensor形狀以及卷積模式,較熟悉如何進行TensorFlow的源代碼調試與修改。本文將介紹如何對TensorFlow進行調試,進而便於有需要的朋友進行內核(C++)的學習與修改。
網上有少許關於如何調試TensorFlow源代碼的文章,有的推薦直接用gdb,有的推薦用Emacs+gdb,有的推薦用codeblock的,筆者通過實驗發現VS code是可視化做的最好的,而且用戶界面友好,調試不會出現卡頓。Emacs在調試時隨着追蹤的深入會卡頓;而單純用gdb…可能適合於linux大佬;codeblock用戶界面不及VS code,而且筆者嘗試調試沒有成功…。

一:準備工作:

  1. 首先安裝VS code,python,gcc,bazel等必要庫。
  2. 然後git下載TensorFlow的源代碼並check out出自己需要的版本。對源代碼進行configure,根據是否有GPU而進行相應選擇。這裏需要注意:TensorFlow的版本必須要和本機的python,gcc,bazel版本相匹配,建議提前想好再安裝所有庫文件。
  3. 在configure源文件之後,我們需要用bazel對TensorFlow源代碼進行編譯。以CPU爲例,編譯命令爲:bazel build --spawn_strategy=standalone --verbose_failures --local_resources 11048,2.0,2.0 -c dbg --copt -g //tensorflow/tools/pip_package:build_pip_package

二:代碼調試:

  1. 打開VS code並打開TensorFlow源代碼根目錄。然後在根目錄創建.vscode文件夾。然後創建launch.json文件。文件內容如下:
    在這裏插入圖片描述其中的program:選項代表的是你所要調試的文件,這裏我們選擇TensorFlow自帶的conv_ops_test文件。
  2. 任務完成,現在就可以到conv_ops_test.cc文件當中設置斷點並開始追蹤啦。

二:代碼修改:

  1. 對於希望修改TensorFlow源代碼的朋友,因爲已經知道如何調試了,剩下的就是在自己希望修改的地方添加斷點,然後追蹤代碼,進而修改並查看修改後對相應操作(卷積啊,池化啊等等)的影響。
  2. 對於希望添加自定義OP的朋友,可以選擇在TensorFlow現有的基礎上添加自定義OP,官網上有相應教程。我個人更推薦基於TensorFlow提供的examples進行修改,這樣就不用自己定義一系列麻煩操作啦。

三:更多內容:
爲了方便需要理解TensorFlow內核,以及希望自定義OP或者修改TensorFlow源代碼的朋友,我錄製了一期在線課程,課程中除了講述如何調試源代碼,同時還涵蓋了如何自定義TensorFlow當中的卷積操作(基於Eigen library)。課程不會講解TensorFlow各個模塊都做什麼的概念性介紹,而是以具體的實例講解如何調試,如何修改源代碼。
自己花費了很多時間來學習如何對TensorFlow源代碼進行調試與修改,課程中也會附帶自己遇到的問題以及解決方法的筆記,如何你想修改TensorFlow源代碼,相信可以節省幾周甚至幾個月的探索時間:https://edu.csdn.net/course/detail/28880

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章