Bazel編譯tensorflow


這里會逐漸補充。

編譯時可以直接在powershell或者cmd或者Anaconda Prompt中執行bazel 命令編譯。

編譯過程中需要關掉360安全衛士,避免編譯進程被殺死導致編譯失敗。

1、bazel編譯tensorflow

(1)打開anaconda prompt

  如果想使用不同版本的虛擬環境可以激活相應的虛擬環境,比如我有一個py35的虛擬環境。  

conda activate py35

(2)配置項目

cd /d D:\GitHub\tensorflow-1.13.1
python configure.py

然后根據提示配置符合自己電腦的信息。

(3)編譯項目:libtensorflow_cc.so、libtensorflow_framework.so和install_headers

編譯之前,去到\tensorflow-master\tensorflow\BUILD文件里面好好看清楚

需要編譯的是libtensorflow_cc.so、libtensorflow_framework.so和install_headers三個項目

install_headers項目會把所有H文件匯總,方便后面引用

cd tensorflow
bazel build :libtensorflow_cc.so(BUILD文件tf_cc_shared_object(name="libtensorflow_cc.so"))
bazel build :libtensorflow_framework.so(BUILD文件tf_cc_shared_object(name="libtensorflow_framework.so"))
bazel build :install_headers(BUILD文件tf_cc_shared_object(name="install_headers"))

最后一條可以不用執行,因為它會將生成的文件安裝到C盤,文件很大:

bazel build :install_headers(BUILD文件tf_cc_shared_object(name="install_headers"))

動態庫生成到bazel-bin/tensorflow文件夾下,使用時libtensorflow_cc.so需要更名為tensorflow_cc.dll。不知道上面的命令libtensorflow_cc.so直接替換成tensorflow_cc.dll或者tensorflow.dll是不是可以編譯成功,可以一試。

 調用示例參考:https://blog.csdn.net/atpalain_csdn/article/details/97945536

 2、上面編譯的tensorflow是cpu版本的,編譯GPU版本的命令如下。

編譯c++ DLL  GPU版本:

bazel build --config=opt --config=cuda --copt=-nvcc_options=disable-warnings //tensorflow:libtensorflow_cc.so 

參考博客:https://blog.csdn.net/yyplc/article/details/104448153

 參考博客:https://blog.csdn.net/sinat_19758811/article/details/90896639

 

3、build freeze_graph 工具( 需要 bazel ):

bazel build tensorflow/python/tools:freeze_graph

 4、配置庫路徑

參考:https://blog.csdn.net/atpalain_csdn/article/details/97945536#Step4_tensorflow_110

按照上面的參考報錯:

cannot open source file "tensorflow/core/framework/types.pb.h"

於是猜測,路徑設置有問題,參考博客中include 目錄下存放的tensordlow不應該是源文件下的tensordlow,而應該是編譯后genfiles文件夾下的tensordlow文件夾,所以需要自己測試一下,我測試了一下,果然替換過來就可以了。(tensorflow-gpu版本發現上面這個問題)

 

參考:https://blog.csdn.net/atpalain_csdn/article/details/97945536

 參考:https://blog.csdn.net/jin739738709/article/details/86705735


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM