2017-10-06 62 views
1

我試圖TensorFlow的C++在MacOS的示例API(https://www.tensorflow.org/api_guides/cc/guide)。如何正確編譯並執行TensorFlow C++ API的示例?

我所做的是:

  1. 在上述克隆的目錄中安裝巴澤勒
  2. 混帳克隆--recursive https://github.com/tensorflow/tensorflow
  3. 的./configure (因爲我的機器上禁用支持OpenCL GPU具有較差)
  4. 按照指南使tensorflow/cc/example/example.cc和tensorflow/cc/example/BUILD
  5. bazel run -c opt // tensorflow/cc/example:example

編譯是成功了,但是出現下面的錯誤。

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,如此看來tensorflow庫問題。

我怎樣才能避免呢?

我試圖在Ubuntu同樣的事情,並在編制比如,

錯誤的最後階段得到了很多的鏈接錯誤:未定義參考<符號名>

回答

1

我終於找到了解決辦法。下面

建設指南中可能不適合最新tensorflow。

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

我根據BUILD在tensorflow/cc中對其進行了修改。

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", 
    ], 
) 

就是這樣。