tensorflow r1.4 ubuntu14.04 C++ API調用 環境配置教程

參考博客http://www.cnblogs.com/hrlnw/p/7383951.html

要求:ubuntu14.04 tensorflow r1.4(按照官網教程安裝並運行成功)

可以在ubuntu中使用cmake make編譯C++工程,調用TensorFlow庫函數及其訓練好的神經網絡模型

1.安裝bazel(參考bazel官網) https://docs.bazel.build/versions/master/install-ubuntu.html
    1. Install JDK 8
    (ubuntu16.04)
    sudo apt-get install openjdk-8-jdk
    (ubuntu14.04 )
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update && sudo apt-get install oracle-java8-installer

    2. Add Bazel distribution URI as a package source (one time setup)
    echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
    curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
    (If you want to install the testing version of Bazel, replace stable with testing.)

    3. Install and update Bazel
    sudo apt-get update && sudo apt-get install bazel
    (Once installed, you can upgrade to a newer version of Bazel with:)
    sudo apt-get upgrade bazel

2.進入tensorflow_r1.4根目錄 執行 ./configure 根據需求選擇Y/N(參考tensorflow installing from sources官網)

3.編譯C++版本動態鏈接庫/C版本
進入路徑 /tensorflow-master/tensorflow 下 執行:
C版本:
bazel build :libtensorflow.so
C++版本:
bazel build :libtensorflow_cc.so

i7大約需要 50 分鐘
編譯成功後,在bazel-bin/tensorflow/目錄下會出現libtensorflow.so/libtensorflow_cc.so文件

4.其他依賴
在使用tensorflow c/c++接口時,會有很多頭文件依賴、protobuf版本依賴等問題
tensorflow/contrib/makefile目錄下,找到build_all_xxx.sh文件並執行,例如準備在linux上使用,就執行build_all_linux.sh文件,成功後會出現一個gen文件夾 大約需要30分鐘

5.編寫代碼和CMakeLists.txt

tf_test.cpp
    #include <tensorflow/core/platform/env.h>
    #include <tensorflow/core/public/session.h>

    #include <iostream>

    using namespace std;
    using namespace tensorflow;

    int main()
    {
        Session* session;
        Status status = NewSession(SessionOptions(), &session);
        if (!status.ok()) {
        cout << status.ToString() << "\n";
        return 1;
        }
        cout << "Session successfully created.\n";
    }



CMakelists.txt

    
cmake_minimum_required (VERSION 2.8)
	 project (tf_example)

	 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")

	 include_directories(
		 /home/xxx/tensorflow-master
		 /home/xxx/tensorflow-master/tensorflow/bazel-genfiles
		 /home/xxx/tensorflow-master/tensorflow/contrib/makefile/gen/protobuf/include
		 /home/xxx/tensorflow-master/tensorflow/contrib/makefile/gen/host_obj
		 /home/xxx/tensorflow-master/tensorflow/contrib/makefile/gen/proto
		 /home/xxx/tensorflow-master/tensorflow/contrib/makefile/downloads/nsync/public
		 /home/xxx/tensorflow-master/tensorflow/contrib/makefile/downloads/eigen
		 /home/xxx/tensorflow-master/bazel-out/local_linux-py3-opt/genfiles
		 )

	 add_executable(tf_test  tf_test.cpp)
	 target_link_libraries(tf_test
		 /home/xxx/tensorflow-master/bazel-bin/tensorflow/libtensorflow_cc.so
		 /home/xxx/tensorflow-master/bazel-bin/tensorflow/libtensorflow_framework.so
		 )





一般來說編譯時找不到某個文件 可以在tensorflow的根目錄下面搜索它,然後添加到include裏面,bazel-×××幾個文件夾裏面也會有相應的頭文件(因爲權限問題可能得單獨搜一下,在父目錄裏面好像搜不到子目錄裏root權限的文件),都找一下。。

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