2017-10-06 8 views
1

私はTensorFlow C++ API(https://www.tensorflow.org/api_guides/cc/guide)の例をmacOSで試しました。私が何をしたかTensorFlow C++ APIの例を正しくコンパイルして実行するにはどうすればよいですか?

は次のとおりです。上記のクローン化されたディレクトリにbazelに

  • gitのクローン--recursive https://github.com/tensorflow/tensorflow
  • は./configureをインストール

    1. (私のマシン以来無効のOpenCLのサポートが貧弱なGPUを持っています)
    2. ガイドに従ってテンソルフロー/ cc/example/example.ccとテンソルフロー/ cc/example/BUILDを作成する
    3. bazel run -c opt //テンソルフロー/ cc /例:例

    コンパイルに成功しましたが、次のエラーが発生しました。

    dyld: Symbol not found: __ZN10tensorflow10DEVICE_CPUE 
        Referenced from: /private/var/tmp/_bazel_yuji/a8fcd93e6cfa4967cc9ea4c6e4cf2977/execroot/org_tensorflow/bazel-out/darwin_x86_64-py3-opt/bin/tensorflow/cc/example/example 
        Expected in: flat namespace 
    in /private/var/tmp/_bazel_yuji/a8fcd93e6cfa4967cc9ea4c6e4cf2977/execroot/org_tensorflow/bazel-out/darwin_x86_64-py3-opt/bin/tensorflow/cc/example/example 
    

    この例では、グローバル変数DEVICE_CPUは使用されていないため、テンソルフローライブラリの問題です。

    どうすればよいですか?

    私はUbuntuで同じことをしようとした

    誤り、などのコンパイルの最後の段階で多くのリンカエラーを得た:<シンボル名>

  • 答えて

    1

    への未定義参照私は最終的に解決策を見つけました。

    以下のガイドの下のビルドは、最新のテンソルフローには適していない可能性があります。

    cc_binary(
        name = "example", 
        srcs = ["example.cc"], 
        deps = [ 
         "//tensorflow/cc:cc_ops", 
         "//tensorflow/cc:client_session", 
         "//tensorflow/core:tensorflow", 
        ], 
    ) 
    

    テンソルフロー/ ccのBUILDに従って修正しました。

    load(
        "//tensorflow:tensorflow.bzl", 
        "tf_cc_binary", 
    ) 
    
    tf_cc_binary(
        name = "example", 
        srcs = ["example.cc"], 
        deps = [ 
         "//tensorflow/cc:cc_ops", 
         "//tensorflow/cc:client_session", 
         "//tensorflow/core:tensorflow", 
        ], 
    ) 
    

    それだけです。

    関連する問題