【问题标题】:How can I compile correctly and execute the example of TensorFlow C++ API?如何正确编译并执行 TensorFlow C++ API 的示例?
【发布时间】:2017-10-06 13:46:56
【问题描述】:

我在 macOS 上尝试了 TensorFlow C++ API (https://www.tensorflow.org/api_guides/cc/guide) 的示例。

我所做的是:

  1. 安装 bazel
  2. git clone --recursive https://github.com/tensorflow/tensorflow
  3. ./configure 在上面克隆的目录中 (因为我的机器 GPU 很差,所以禁用了 OpenCL 支持)
  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 上尝试了相同的操作,但在编译的最后阶段遇到了许多链接器错误,例如,

错误:未定义对的引用

【问题讨论】:

    标签: c++ tensorflow bazel


    【解决方案1】:

    我终于找到了解决办法。

    指南下面的BUILD可能不适合最新的tensorflow。

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

    我是根据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",
        ],
    )
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      相关资源
      最近更新 更多