gpt4 book ai didi

c++ - 使用 cmake 构建 tensorflow 服务客户端

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:31 25 4
gpt4 key购买 nike

我搜索了执行此操作的最佳方法,但找不到明确的答案。

有没有人能够使用 cmake 构建一个 tensorflow 服务客户端?

我在从 proto 生成 CPP 文件时遇到困难,因为预测服务需要它们。这些原型(prototype)文件还包括来自 tensorflow 的原型(prototype)文件。

到目前为止,我想出了这个:

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 includes not being found的问题,我使用了command

set(PROTOBUF_GENERATE_CPP_APPEND_PATH OFF)

这里有解释:https://groups.google.com/forum/#!topic/protobuf/eow2fNDUHvc

我当前的文件夹结构是

serving/
CmakeLists.txt
tensorflow/
tensorflow_serving/
apis/

文件夹 apis 包含客户端实现所需的 .proto 文件,它们包括文件夹 tensorflow 中的 .proto 文件

这是正确的方法吗?

如有任何帮助/建议,我们将不胜感激。

最佳答案

我能够让它在您拥有的布局中工作,其中 CMakeLists.txt 文件与 serving 存储库位于同一级别 here .不过,您还需要安装 Tensorflow(使用 tensorflow_cc)。

但是,您可能不想使用官方 tensorflow/serving 存储库的分支,所以我更进一步,将 CMakeLists.txt 移出所以你可以将官方存储库子模块化。我做了一个例子here

要点是 protobuf CMake 子模块期望原型(prototype)文件放置在 same directory 中。从中调用它。我对子模块做了一些修改,让我们从 serving 之上的级别调用它,并确保它以正确的顺序调用包含路径的编译器,以支持 中的原型(prototype)文件的嵌套结构code>serving/tensorflow_serving/apis/*(并将其相应地放置在指定的构建目录中)

希望其他有更好专业知识的人可以做得更好!

关于c++ - 使用 cmake 构建 tensorflow 服务客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46811399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com