tensorflow: Cannot compile tensorflow lite (TfLiteCameraDemo and tensorflow/python/tools:freeze_graph) on macOS Sierra
System information
- Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
- OS Platform and Distribution (e.g., Linux Ubuntu 16.04): macOS Sierra 10.12.6
- TensorFlow installed from (source or binary): source
- TensorFlow version (use command below): 1.4.1 (fdf34a8 on master branch)
- Python version: 2.7.13
- Bazel version (if compiling from source): 0.8.1-homebrew
- GCC/Compiler version (if compiling from source): Xcode 9.2
- CUDA/cuDNN version: (not using cuda)
- GPU model and memory: (not using GPU)
- Exact command to reproduce:
bazel build -c opt --cxxopt='--std=c++11' //tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo
Describe the problem
I can compile tensorflow android demo on macOS, but cannot compile tensorflow lite android demo successfully. What I actually want to do is convert a tensorflow model to tensorflow lite model. Similar errors happen.
UPDATE on Dec 19, 2017: I found the workaround/solution. See my reply below.
Source code / logs
Compiled tensorflow android demo on macOS successfully.
$ bazel build -c opt //tensorflow/examples/android:tensorflow_demo
...
Target //tensorflow/examples/android:tensorflow_demo up-to-date:
bazel-bin/tensorflow/examples/android/tensorflow_demo_deploy.jar
bazel-bin/tensorflow/examples/android/tensorflow_demo_unsigned.apk
bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
INFO: Elapsed time: 862.549s, Critical Path: 112.20s
INFO: Build completed successfully, 776 total actions
But failed to compile tensorflow lite android demo.
$ bazel build -c opt --cxxopt='--std=c++11' //tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/types/optional.h' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/types' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/types:optional.h'?)
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/base/config_test.cc' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/base' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/base:config_test.cc'?)
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/debugging/internal/address_is_readable.h' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/debugging' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/debugging:internal/address_is_readable.h'?)
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/debugging/leak_check.h' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/debugging' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/debugging:leak_check.h'?)
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/strings/BUILD.bazel' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/strings' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/strings:BUILD.bazel'?)
...
Similar errors happen when I wanted to build the tool of converting tensorflow model to tensorflow lite model which is what I really need.
$ bazel build tensorflow/python/tools:freeze_graph
WARNING: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/core/BUILD:1806:1: in includes attribute of cc_library rule //tensorflow/core:framework_headers_lib: '../../external/nsync/public' resolves to 'external/nsync/public' not below the relative path of its package 'tensorflow/core'. This will be an error in the future. Since this rule was created by the macro 'cc_header_only_library', the error might have been caused by the macro implementation in /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/tensorflow.bzl:1131:30
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/types/optional.h' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/types' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/types:optional.h'?)
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/base/config_test.cc' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/base' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/base:config_test.cc'?)
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/debugging/internal/address_is_readable.h' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/debugging' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/debugging:internal/address_is_readable.h'?)
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/debugging/leak_check.h' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/debugging' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/debugging:leak_check.h'?)
WARNING: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/learn/BUILD:15:1: in py_library rule //tensorflow/contrib/learn:learn: target '//tensorflow/contrib/learn:learn' depends on deprecated target '//tensorflow/contrib/session_bundle:exporter': No longer supported. Switch to SavedModel immediately.
WARNING: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/learn/BUILD:15:1: in py_library rule //tensorflow/contrib/learn:learn: target '//tensorflow/contrib/learn:learn' depends on deprecated target '//tensorflow/contrib/session_bundle:gc': No longer supported. Switch to SavedModel immediately.
ERROR: /Users/XXX/GitRoot/OpenSourceProjects/tensorflow/tensorflow/contrib/lite/BUILD:193:12: Label '//tensorflow/contrib/lite:downloads/absl/absl/strings/BUILD.bazel' crosses boundary of subpackage 'tensorflow/contrib/lite/downloads/absl/absl/strings' (perhaps you meant to put the colon here: '//tensorflow/contrib/lite/downloads/absl/absl/strings:BUILD.bazel'?)
...
My config in WORKSPACE
android_sdk_repository(
name = "androidsdk",
api_level = 23,
build_tools_version = "26.0.1",
path = "/Users/XXX/Resources/Android/sdk",
)
android_ndk_repository(
name="androidndk",
path="/Users/XXX/Resources/Android/ndk/android-ndk-r14b",
api_level=14,
)
Other
$ python --version
Python 2.7.13 :: Continuum Analytics, Inc.
$ bazel version
Build label: 0.8.1-homebrew
Build target: bazel-out/darwin-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Tue Dec 5 19:33:07 2017 (1512502387)
Build timestamp: 1512502387
Build timestamp as int: 1512502387
== cat /etc/issue ===============================================
Darwin ITSG000227-MAC.local 16.7.0 Darwin Kernel Version 16.7.0: Wed Oct 4 00:17:00 PDT 2017; root:xnu-3789.71.6~1/RELEASE_X86_64 x86_64
Mac OS X 10.12.6
== are we in docker =============================================
No
== compiler =====================================================
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
== uname -a =====================================================
Darwin ITSG000227-MAC.local 16.7.0 Darwin Kernel Version 16.7.0: Wed Oct 4 00:17:00 PDT 2017; root:xnu-3789.71.6~1/RELEASE_X86_64 x86_64
== check pips ===================================================
numpy (1.13.3)
== check for virtualenv =========================================
False
== tensorflow import ============================================
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "tensorflow/python/pywrap_tensorflow.py", line 25, in <module>
from tensorflow.python.platform import self_check
ImportError: No module named platform
== env ==========================================================
LD_LIBRARY_PATH is unset
DYLD_LIBRARY_PATH is unset
== nvidia-smi ===================================================
./tools/tf_env_collect.sh: line 105: nvidia-smi: command not found
== cuda libs ===================================================
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Comments: 25 (9 by maintainers)
@knsong Try to run
tensorflow/contrib/lite/download_dependencies.sh
instead oftensorflow/contrib/makefile/download_dependencies.sh
. No need to copy folders.@jakajacky OMG, the disgusting compiling errors about TensorFlow Lite came back AGAIN after I compiled/used a standard TensorFlow tool (e.g. transform_graph). It seems that the development environments of standard TensorFlow and TensorFlow Lite conflict with each other.
Manually copying protobuf and re2 folders from tensorflow/contrib/makefile/downloads to tensorflow/contrib/lite/downloads DOES NOT HELP this time. TensorFlow lite toco tool compiles after I ran
tensorflow/contrib/lite/download_dependencies.sh