Tensorflow android 示例无法构建
Tensorflow android example won't build
我正在尝试从 tensorflow 构建 android 示例,但将 运行 变成一个烦人的构建错误。到目前为止我的步数:
- 已安装 android SDK 工作室。 (v24)
- 下载了androidNDK 10e(其他版本好像不行)
- 另外安装了SDK构建工具23.0.1(v24好像不行)
- 使用初始模型向 android 示例添加了资产文件夹
- 编辑了 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.
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
我正在尝试从 tensorflow 构建 android 示例,但将 运行 变成一个烦人的构建错误。到目前为止我的步数:
- 已安装 android SDK 工作室。 (v24)
- 下载了androidNDK 10e(其他版本好像不行)
- 另外安装了SDK构建工具23.0.1(v24好像不行)
- 使用初始模型向 android 示例添加了资产文件夹
- 编辑了 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.
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