簡體   English   中英

使用cmake構建tensorflow服務客戶端

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM