2017-10-18 11 views
2

これを行う最善の方法を探しましたが、明確な答えが見つかりませんでした。cmakeを使ってテンソルフローを提供するクライアントを構築する

cmakeを使用してテンソルフローを提供するクライアントを誰でも作成できましたか?

protoからCPPファイルを生成するのが難しいのは、予測サービスに必要なためです。これらのプロトファイルにはテンソルフローのプロトファイルも含まれています。

これまでのところ、私はこれが出ている:

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ファイルが含まれていると、彼らは、フォルダtensorflowから.protoファイルが含まれています。

これは正しい方法ですか?

ご迷惑をおかけして申し訳ございません。

答えて

0

CMakeLists.txtファイルがservingリポジトリhereと同じレベルに配置されているレイアウトで動作させることができました。しかし、Tensorflowもインストールする必要があります(tensorflow_ccを使用)。

ただし、あなたはおそらく公式tensorflow/servingリポジトリのフォークでマックしたくないので、私はさらに一歩行って、あなただけの公式リポジトリをサブモジュールできるようCMakeLists.txtを移動しました。私は例を作ったhere

protobuf CMakeサブモジュールは、それが呼び出されたsame directoryにprotoファイルが配置されることを期待しています。私はサブモジュールをいくつか変更して、servingより上のレベルから呼び出すことができ、正しい順序でインクルードパスを持つコンパイラを起動して、protoファイルのネストされた構造をサポートするようにしました(serving/tensorflow_serving/apis/*指定されたビルドディレクトリ)

もっと良いノウハウを持つ誰かがこれをよりうまくできれば幸いです!

+0

私はあきらめました。私が見つけたのは、CMakeコマンド(GENERATE_CPP)はそのビルドツリーに.pbファイルしか生成しないということです。 私がしたのは、必要なprotoファイルをすべて別のフォルダにコピーし(ディレクトリ構造を維持して)、protocシェルコマンドを呼び出すことによって.pbファイルを明示的に生成することでした。そしてcmakeと一緒に別のprrotobufライブラリを構築しました。 – Maja

+0

私は[this](https://github.com/philosophus/tf-serving-demo)を参考にしました。 Florian Dahmsによる[ここ](http://fdahms.com/2017/03/05/tensorflow-serving-jvm-client/)の詳細な説明 – Maja

関連する問題