0

我正在尝试从 tensorflow 构建 android 示例,但一直遇到烦人的构建错误。到目前为止我的步骤:

  • 为 SDK 安装了 android studio。(v24)
  • 下载了android NDK 10e(其他版本好像不行)
  • 另外安装了 SDK 构建工具 23.0.1(v24 似乎不起作用)
  • 使用 inception 模型在 android 示例中添加了一个 assets 文件夹
  • 编辑 WORKSPACE 文件以指向 NDK/SDK 位置。

我尝试了几个版本的 TF,但我一直收到错误消息。有任何想法吗?

错误:

C++ compilation of rule '@protobuf//:protobuf' failed: namespace-sandbox failed: error executing command /home/sander/.cache/bazel/_bazel_sander/577a8dcd97360f56540bc1f3f08ac240/tf-cat-face/_bin/namespace-sandbox ... (remaining 51 argument(s) skipped).
src/main/tools/namespace-sandbox.c:697: execvp(argv[0], argv): No such file or directory
Target //tensorflow/examples/android:tensorflow_demo failed to build
Use --verbose_failures to see the command lines of failed build steps.
4

2 回答 2

0

Bazel 为每个编译步骤创建一个沙箱,因此您的构建不会包含任何无意的内容。但是,上次我检查时,TF 不能使用沙箱,因为它的构建不是完全密封的。您遇到的错误是沙箱错误(它找不到应该在沙箱中的东西),因此您可以使用--genrule_strategy=standalone--spawn_strategy=standalone标志关闭沙箱,例如,

bazel build --genrule_strategy=standalone --spawn_strategy=standalone //path/to/your:target
于 2016-06-29T13:50:07.203 回答
0

如果您正在寻找一种快速构建 TensorFlow Android 演示应用程序的方法,请查看我编写 的本教程。

文章解释了更多,但我创建了这个 Docker 映像,其中包含您需要的所有依赖项,这样您就可以拉取 Docker 映像并构建 Android 演示应用程序。

我发现的一个问题是我需要传递--local_resources选项以确保在 Docker 中成功构建(否则它们会耗尽内存,即使在我的 3.1 GHz、16GB RAM Macbook Pro 上也是如此):

bazel build -c opt --local_resources 4096,4.0,1.0 -j 1 //tensorflow/examples/android:tensorflow_demo
于 2017-03-05T23:02:30.977 回答