[英]Building tensorflow serving client with cmake
我搜索了執行此操作的最佳方法,但找不到清晰的答案。
有誰能夠使用cmake構建一個張量流服務客戶端?
我很難從原型生成CPP文件,因為預測服務需要它們。 這些原始文件還包括來自tensorflow的原始文件。
到目前為止,我已經提出了:
project(serving C CXX)
find_package(Protobuf REQUIRED)
file(GLOB_RECURSE proto_files RELATIVE ${serving_SOURCE_DIR}/tensorflow/
"${serving_SOURCE_DIR}/tensorflow/*.proto")
set(PROTOBUF_GENERATE_CPP_APPEND_PATH OFF)
include_directories(${PROTOBUF_INCLUDE_DIRS})
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${proto_files})
add_library(tf_protos ${PROTO_SRCS} ${PROTO_HDRS})
target_link_libraries(tf_protos PUBLIC ${PROTOBUF_LIBRARIES})
Cmake編譯成功,但是make命令給我一個錯誤:
No rule to make target '../tensorflow/tools/proto_text/test.proto', needed by 'tensorflow/tools/proto_text/test.pb.cc'. Stop.
為了克服.proto
包括找不到的問題,我使用了命令
set(PROTOBUF_GENERATE_CPP_APPEND_PATH OFF)
對此進行了說明: https : //groups.google.com/forum/#!topic / protobuf / eow2fNDUHvc
我當前的文件夾結構是
serving/
CmakeLists.txt
tensorflow/
tensorflow_serving/
apis/
文件夾apis
包含客戶端實現中所需的.proto
文件,並且包括來自.proto
文件夾的tensorflow
文件。
這是正確的方法嗎?
任何幫助/建議將不勝感激。
我能夠使它在您具有的布局中工作,其中CMakeLists.txt文件與此處的serving
存儲庫位於同一級別。 您也需要安裝Tensorflow(使用tensorflow_cc )。
但是 ,您可能不想tensorflow/serving
官方tensorflow/serving
存儲庫的分支,所以我走了一步,將CMakeLists.txt移出了,以便您可以對官方存儲庫進行子tensorflow/serving
。 我在這里做了一個例子
要點是,protobuf CMake子模塊希望將proto文件放在與該文件相同的目錄中 。 我對子模塊進行了一些修改,以使我們可以從serving
級別之上的層次對其進行調用,並確保它以正確的順序調用包含路徑的編譯器,以支持serving/tensorflow_serving/apis/*
原始文件的嵌套結構(並將其相應地放置在指定的構建目錄中)
希望其他具有更好專業知識的人可以使它變得更好!
這些為我工作。
https://github.com/wardsng/inception_cmake
https://github.com/FloopCZ/tensorflow_cc
您可以選擇一個私人安裝目錄,而不是默認目錄,例如/ usr / local /...。
cmake -DCMAKE_INSTALL_PREFIX = ..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.