Tensorflow android 示例无法构建

Tensorflow android example won't build

我正在尝试从 tensorflow 构建 android 示例,但将 运行 变成一个烦人的构建错误。到目前为止我的步数:

我尝试了多个版本的 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.

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

bazel build --genrule_strategy=standalone --spawn_strategy=standalone //path/to/your:target

如果您正在寻找构建 TensorFlow Android 演示应用程序的快速方法,请查看我写的 this tutorial

文章解释得更多,但我创建了 this Docker image,其中包含您需要的所有依赖项,因此您只需拉取 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