在獲得libtensorflow_cc.so和libtensorflow_framework.so庫後,開始進行c++api開發
編寫原始檔
原始檔:test.cc
#include "/home/zhouxd/tools/tensorflow-master/tensorflow/core/public/session.h"
#include
using
namespace
std;
using
namespace tensorflow;
int main()
cout
<< "session successfully created.\n";
}
該例子的任務是新建乙個session並判斷是否成功建立。
2.cmakelists.txt
cmake_minimum_required (version 2.8.8)
project (tf_test)
set(cmake_cxx_flags "$ -g -std=c++11 -w")
link_directories(./lib)
include_directories(
/home/zhouxd/tools/tensorflow-master
/home/zhouxd/tools/tensorflow-master/bazel-genfiles
/home/zhouxd/tools/eigen3
/home/zhouxd/tools/protobuf_bin/include
/home/zhouxd/tools/nsync-1.20.0/public
) add_executable(tf_test test.cc)
target_link_libraries(tf_test tensorflow_cc tensorflow_framework)
說明:
- link_directories所指路徑是編譯好的tensorflow動態庫的路徑
- tensorflow-master是tensorflow的原始碼路徑
- eigen3是eigen3的目錄
- nsync-1.20.0是nsync的安裝目錄
- protobuf_bin是protobuf的安裝目錄,tensorflow用到了protobuf,如果不包含這個路徑,編譯的時候不會提示缺少某標頭檔案,而是會提示某某標頭檔案的版本不對。一般來說,在安裝protobuf時已經將這個路徑加到環境變數中了,此時在開發環境中不加也沒關係,但如果要轉移到其他環境,就需要拷貝這個目錄幷包含。
有意思的是,通過tensorflow原始碼也能生成這個目錄,在原始碼的tensorflow/contrib/makefile目錄下,找到build_all_***.sh檔案並執行(不要用sh命令,直接執行),成功後會出現乙個gen資料夾,gen檔案下面也有個protobuf/include資料夾,包含這個資料夾也是可以的。
/home/zhouxd/
.cache/bazel/_bazel_zhouxd/3ea11f2719d18e25c3b1b9955bf36e24/execroot/org_tensorflow/bazel-out/k8-opt/genfiles/
可以看到該路徑是在使用者根目錄下生成的,有意思的一點是該目錄下也有乙個tensorflow資料夾,就像原始碼目錄(tensorflow-master)下存在乙個tensorflow資料夾放置一些標頭檔案一樣,這個資料夾下則有許多在編譯動態庫時生成的標頭檔案,這些對c++ api來說必不可缺的。編譯在編譯的時候,程式會從原始碼目錄下的tensorflow資料夾裡尋找所需標頭檔案,同時也會從該目錄下的tensorflow資料夾裡尋找檔案。
值得注意的是,在程式打包或遷移環境的時候很容易會忘掉這個資料夾,造成標頭檔案缺失,往往是該檔案沒有拷貝走,bazel-genfiles指不到地方,打包時可以把該目錄下的tensorflow目錄與原始碼的tensorflow目錄合併。這樣include乙個資料夾即可。同樣的,其他依賴庫的標頭檔案在打包時也要注意是否存在,可以把這些目錄單獨拷貝出來整理。
mkdir build
cd ./build
cmake ..
make
執行生成的tf_test,輸出session successfully created.即表示成功 Structured Streaming 開發入門
structured streaming 作為 spark 家族的新成員,通過 spark sql dataframe 來處理 batch streaming 資料,基本的 sparksql api 即可實現離線處理和流式處理,大大的方便了流式計算的開發,另外還提供了豐富的功能。structured...
傳奇開服怎麼開的起來?
有很多想開服的朋友都會問我,傳奇開服怎麼開的起來?其實這個問題從層面上講是有些模糊的,怎麼開的起來?淺層面來看,有伺服器 版本 備案網域名稱和平台就可以開起來 沒有技術的怎麼辦呢?沒有技術的建議大家先學會一些基礎的開服技術,例如架設 搭站 開區合區 微端配置 登入器配置和設定gm號這些,真的不難,不...
電腦開不開機 且開且珍惜
電腦開不開機了?這個確實有點棘手 不過大多數的時候都不會有太大問題 我在哈工大電腦110俱樂部做電腦義診的時候也經常遇到這種情況,今天就和大家談一談經驗。按電源鍵,燈不亮,沒反應 這種情況 遇見過!這種情況多半是電腦拆機清灰之後或是電腦受到了重創。有些不細心的志願者拆機之後忘了把電源排線插上是時有發...