教程2:tensorflow lite 编译和安装二 使用bazel编译
教程1:tensorflow lite 交叉编译和安装一
教程2:tensorflow lite 编译和安装二 使用bazel编译
教程3:tensorflow lite c++ 接口解读
教程4:TensorFlow2.0 label_image 的编译和使用
这里的坑就是 bazel编译时就是按照指定的版本进行编译,比如这里用的是
0.24.1,最新的版本1.0 还不能识别。
(base) lid@lid-VirtualBox:~/tensorflow_lite$ cd tensorflow/
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$ ls
ACKNOWLEDGMENTS arm_compiler.BUILD BUILD CODEOWNERS configure.cmd CONTRIBUTING.md ISSUE_TEMPLATE.md models.BUILD RELEASE.md tensorflow tools
ADOPTERS.md AUTHORS CODE_OF_CONDUCT.md configure configure.py ISSUES.md LICENSE README.md SECURITY.md third_party WORKSPACE
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$ ./configure
WARNING: --batch mode is deprecated. Please instead explicitly shut down your Bazel server using the command "bazel shutdown".
You have bazel 0.24.1 installed.
Please specify the location of python. [Default is /home/lid/miniconda3/bin/python]: bazel shutdown
Invalid python path: bazel shutdown cannot be found.
Please specify the location of python. [Default is /home/lid/miniconda3/bin/python]: ^[[A^[[B^CTraceback (most recent call last):
File "./configure.py", line 100, in get_input
answer = raw_input(question)
NameError: name 'raw_input' is not defined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./configure.py", line 1599, in <module>
main()
File "./configure.py", line 1405, in main
setup_python(environ_cp)
File "./configure.py", line 208, in setup_python
default_python_bin_path)
File "./configure.py", line 593, in get_from_env_or_user_or_default
var = get_input(ask_for_var)
File "./configure.py", line 102, in get_input
answer = input(question) # pylint: disable=bad-builtin
KeyboardInterrupt
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$ ./configure
WARNING: --batch mode is deprecated. Please instead explicitly shut down your Bazel server using the command "bazel shutdown".
You have bazel 0.24.1 installed.
Please specify the location of python. [Default is /home/lid/miniconda3/bin/python]:
Found possible Python library paths:
/home/lid/miniconda3/lib/python3.7/site-packages
Please input the desired Python library path to use. Default is [/home/lid/miniconda3/lib/python3.7/site-packages]
Do you wish to build TensorFlow with XLA JIT support? [Y/n]: n
No XLA JIT support will be enabled for TensorFlow.
Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: n
No OpenCL SYCL support will be enabled for TensorFlow.
Do you wish to build TensorFlow with ROCm support? [y/N]: n
No ROCm support will be enabled for TensorFlow.
Do you wish to build TensorFlow with CUDA support? [y/N]: n
No CUDA support will be enabled for TensorFlow.
Do you wish to download a fresh release of clang? (Experimental) [y/N]: n
Clang will not be downloaded.
Do you wish to build TensorFlow with MPI support? [y/N]: n
No MPI support will be enabled for TensorFlow.
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]:
Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:
Not configuring the WORKSPACE for Android builds.
Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See .bazelrc for more details.
--config=mkl # Build with MKL support.
--config=monolithic # Config for mostly static monolithic build.
--config=gdr # Build with GDR support.
--config=verbs # Build with libverbs support.
--config=ngraph # Build with Intel nGraph support.
--config=numa # Build with NUMA support.
--config=dynamic_kernels # (Experimental) Build kernels into separate shared objects.
--config=v2 # Build TensorFlow 2.x instead of 1.x.
Preconfigured Bazel build configs to DISABLE default on features:
--config=noaws # Disable AWS S3 filesystem support.
--config=nogcp # Disable GCP support.
--config=nohdfs # Disable HDFS support.
--config=noignite # Disable Apache Ignite support.
--config=nokafka # Disable Apache Kafka support.
--config=nonccl # Disable NVIDIA NCCL support.
Configuration finished
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
上述过程中没有输入n 的直接enter默认。安装CPU 版,
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$ bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
Starting local Bazel server and connecting to it...
INFO: Options provided by the client:
Inherited 'common' options: --isatty=1 --terminal_columns=205
INFO: Reading rc options for 'build' from /home/lid/tensorflow_lite/tensorflow/.bazelrc:
'build' options: --apple_platform_type=macos --define framework_shared_object=true --define open_source_build=true --define=use_fast_cpp_protos=true --define=allow_oversize_protos=true --spawn_strategy=standalone --strategy=Genrule=standalone -c opt --announce_rc --define=grpc_no_ares=true --define=PREFIX=/usr --define=LIBDIR=$(PREFIX)/lib --define=INCLUDEDIR=$(PREFIX)/include --config=v2
INFO: Reading rc options for 'build' from /home/lid/tensorflow_lite/tensorflow/.tf_configure.bazelrc:
'build' options: --action_env PYTHON_BIN_PATH=/home/lid/miniconda3/bin/python --action_env PYTHON_LIB_PATH=/home/lid/miniconda3/lib/python3.7/site-packages --python_path=/home/lid/miniconda3/bin/python --action_env TF_CONFIGURE_IOS=0
INFO: Found applicable config definition build:v2 in file /home/lid/tensorflow_lite/tensorflow/.bazelrc: --define=tf_api_version=2
INFO: Found applicable config definition build:opt in file /home/lid/tensorflow_lite/tensorflow/.tf_configure.bazelrc: --copt=-march=native --copt=-Wno-sign-compare --host_copt=-march=native --define with_default_optimizations=true
DEBUG: Rule 'io_bazel_rules_docker' indicated that a canonical reproducible form can be obtained by modifying arguments shallow_since = "1556410077 -0400"
ERROR: /home/lid/tensorflow_lite/tensorflow/third_party/python_runtime/BUILD:5:1: no such package '@local_config_python//': Traceback (most recent call last):
File "/home/lid/tensorflow_lite/tensorflow/third_party/py/python_configure.bzl", line 344
_create_local_python_repository(repository_ctx)
File "/home/lid/tensorflow_lite/tensorflow/third_party/py/python_configure.bzl", line 296, in _create_local_python_repository
_get_numpy_include(repository_ctx, python_bin)
File "/home/lid/tensorflow_lite/tensorflow/third_party/py/python_configure.bzl", line 276, in _get_numpy_include
_execute(repository_ctx, [python_bin, "-c",..."], <2 more arguments>)
File "/home/lid/tensorflow_lite/tensorflow/third_party/py/python_configure.bzl", line 56, in _execute
_fail("\n".join([error_msg.strip() if ... ""]))
File "/home/lid/tensorflow_lite/tensorflow/third_party/py/python_configure.bzl", line 27, in _fail
fail(("%sPython Configuration Error:%...)))
Python Configuration Error: Problem getting numpy include path.
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
Is numpy installed?
and referenced by '//third_party/python_runtime:headers'
ERROR: Analysis of target '//tensorflow/tools/pip_package:build_pip_package' failed; build aborted: Analysis failed
INFO: Elapsed time: 1103.475s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (178 packages loaded, 3487 targets configured)
(base) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
没有安装numpy 报错,安装numpy
python3 -m pip install numpy
依赖的包 six numpy wheel mock enum34 keras
安装完成后继续编译 bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
ERROR: /home/lid/tensorflow_lite/tensorflow/tensorflow/BUILD:852:1: Executing genrule //tensorflow:tf_python_api_gen_v2 failed (Exit 1)
Traceback (most recent call last):
File "/home/lid/.cache/bazel/_bazel_lid/2037b6f96cfe3f12acbf314e5e238949/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_2_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/tools/api/generator/create_python_api.py", line 27, in <module>
from tensorflow.python.tools.api.generator import doc_srcs
File "/home/lid/.cache/bazel/_bazel_lid/2037b6f96cfe3f12acbf314e5e238949/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_2_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/__init__.py", line 83, in <module>
from tensorflow.python import keras
File "/home/lid/.cache/bazel/_bazel_lid/2037b6f96cfe3f12acbf314e5e238949/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_2_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/keras/__init__.py", line 32, in <module>
from tensorflow.python.keras import datasets
File "/home/lid/.cache/bazel/_bazel_lid/2037b6f96cfe3f12acbf314e5e238949/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_2_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/keras/datasets/__init__.py", line 25, in <module>
from tensorflow.python.keras.datasets import imdb
File "/home/lid/.cache/bazel/_bazel_lid/2037b6f96cfe3f12acbf314e5e238949/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_2_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/keras/datasets/imdb.py", line 25, in <module>
from tensorflow.python.keras.preprocessing.sequence import _remove_long_seq
File "/home/lid/.cache/bazel/_bazel_lid/2037b6f96cfe3f12acbf314e5e238949/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_2_tf_python_api_gen_v2.runfiles/org_tensorflow/tensorflow/python/keras/preprocessing/__init__.py", line 21, in <module>
import keras_preprocessing
ModuleNotFoundError: No module named 'keras_preprocessing'
Target //tensorflow/tools/pip_package:build_pip_package failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 28509.189s, Critical Path: 135.85s
INFO: 8459 processes: 8459 local.
FAILED: Build did NOT complete successfully
进入tf 环境,source activate tf
pip insatall keras
如果出现read失败,多安装几次。
安装成功后出现
Successfully built pyyaml
Installing collected packages: scipy, pyyaml, keras
Successfully installed keras-2.3.1 pyyaml-5.1.2 scipy-1.3.1
继续编译 bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
Ubuntu编译需要8个小时,痛心啊。
执行安装 conda install keras-preprocessing
(tf) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$
(tf) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$ conda install keras-preprocessing
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.7.10
latest version: 4.7.12
Please update conda by running
$ conda update -n base -c defaults conda
## Package Plan ##
environment location: /home/lid/miniconda3/envs/tf
added / updated specs:
- keras-preprocessing
The following packages will be downloaded:
package | build
---------------------------|-----------------
blas-1.0 | mkl 6 KB
ca-certificates-2019.10.16 | 0 131 KB
intel-openmp-2019.4 | 243 729 KB
keras-preprocessing-1.1.0 | py_1 36 KB
libgfortran-ng-7.3.0 | hdf63c60_0 1006 KB
mkl-2019.4 | 243 131.2 MB
mkl-service-2.3.0 | py36he904b0f_0 219 KB
mkl_fft-1.0.14 | py36ha843d7b_0 155 KB
mkl_random-1.1.0 | py36hd6b4f25_0 324 KB
numpy-1.17.2 | py36haad9e8e_0 4 KB
numpy-base-1.17.2 | py36hde5b4d6_0 4.2 MB
openssl-1.1.1d | h7b6447c_3 3.7 MB
scipy-1.3.1 | py36h7c811a0_0 14.0 MB
six-1.12.0 | py36_0 23 KB
------------------------------------------------------------
Total: 155.7 MB
The following NEW packages will be INSTALLED:
blas pkgs/main/linux-64::blas-1.0-mkl
intel-openmp pkgs/main/linux-64::intel-openmp-2019.4-243
keras-preprocessi~ pkgs/main/noarch::keras-preprocessing-1.1.0-py_1
libgfortran-ng pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
mkl pkgs/main/linux-64::mkl-2019.4-243
mkl-service pkgs/main/linux-64::mkl-service-2.3.0-py36he904b0f_0
mkl_fft pkgs/main/linux-64::mkl_fft-1.0.14-py36ha843d7b_0
mkl_random pkgs/main/linux-64::mkl_random-1.1.0-py36hd6b4f25_0
numpy pkgs/main/linux-64::numpy-1.17.2-py36haad9e8e_0
numpy-base pkgs/main/linux-64::numpy-base-1.17.2-py36hde5b4d6_0
scipy pkgs/main/linux-64::scipy-1.3.1-py36h7c811a0_0
six pkgs/main/linux-64::six-1.12.0-py36_0
The following packages will be UPDATED:
ca-certificates 2019.8.28-0 --> 2019.10.16-0
openssl 1.1.1d-h7b6447c_2 --> 1.1.1d-h7b6447c_3
Proceed ([y]/n)? y
Downloading and Extracting Packages
openssl-1.1.1d | 3.7 MB |##################################################################################### | 100%
numpy-base-1.17.2 | 4.2 MB | ############################################################################ | 100%
six-1.12.0 | 23 KB | ##################################################################### | 100%
scipy-1.3.1 | 14.0 MB | ##################################################################### | 100%
mkl_fft-1.0.14 | 155 KB | #################################################################### | 100%
numpy-1.17.2 | 4 KB | ################################################################### | 100%
ca-certificates-2019 | 131 KB | ################################################################# | 100%
blas-1.0 | 6 KB | ##################################################################### | 100%
intel-openmp-2019.4 | 729 KB | ################################################################## | 100%
mkl-service-2.3.0 | 219 KB | #################################################################### | 100%
mkl-2019.4 | 131.2 MB | ###################################4 | 22%
keras-preprocessing- | 36 KB | ################################################################### | 100%
mkl_random-1.1.0 | 324 KB | ############################################################### | 100%
libgfortran-ng-7.3.0 | 1006 KB | ################################################################# | 100%
CondaError: Downloaded bytes did not match Content-Length
url: https://repo.anaconda.com/pkgs/main/linux-64/mkl-2019.4-243.conda
target_path: /home/lid/miniconda3/pkgs/mkl-2019.4-243.conda
Content-Length: 137562990
downloaded bytes: 30079702
下载失败,继续下载。
(tf) lid@lid-VirtualBox:~/tensorflow_lite/tensorflow$ conda install keras-preprocessing
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.7.10
latest version: 4.7.12
Please update conda by running
$ conda update -n base -c defaults conda
WARNING conda.core.package_cache_data:_make_single_record(350): Encountered corrupt package tarball at /home/lid/miniconda3/pkgs/mkl-2019.4-243.conda. Conda has removed it, but you need to re-run conda to download it again.
## Package Plan ##
environment location: /home/lid/miniconda3/envs/tf
added / updated specs:
- keras-preprocessing
The following packages will be downloaded:
package | build
---------------------------|-----------------
mkl-2019.4 | 243 131.2 MB
------------------------------------------------------------
Total: 131.2 MB
The following NEW packages will be INSTALLED:
blas pkgs/main/linux-64::blas-1.0-mkl
intel-openmp pkgs/main/linux-64::intel-openmp-2019.4-243
keras-preprocessi~ pkgs/main/noarch::keras-preprocessing-1.1.0-py_1
libgfortran-ng pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
mkl pkgs/main/linux-64::mkl-2019.4-243
mkl-service pkgs/main/linux-64::mkl-service-2.3.0-py36he904b0f_0
mkl_fft pkgs/main/linux-64::mkl_fft-1.0.14-py36ha843d7b_0
mkl_random pkgs/main/linux-64::mkl_random-1.1.0-py36hd6b4f25_0
numpy pkgs/main/linux-64::numpy-1.17.2-py36haad9e8e_0
numpy-base pkgs/main/linux-64::numpy-base-1.17.2-py36hde5b4d6_0
scipy pkgs/main/linux-64::scipy-1.3.1-py36h7c811a0_0
six pkgs/main/linux-64::six-1.12.0-py36_0
The following packages will be UPDATED:
ca-certificates 2019.8.28-0 --> 2019.10.16-0
openssl 1.1.1d-h7b6447c_2 --> 1.1.1d-h7b6447c_3
Proceed ([y]/n)? y
Downloading and Extracting Packages
mkl-2019.4 | 131.2 MB | #################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
继续编译。换了台服务器
INFO: Elapsed time: 2827.593s, Critical Path: 1332.69s INFO: 8703 processes: 8703 local. INFO: Build completed successfully, 9304 total actions (tf2) i@i-Super-Server:~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow$
终于大功告成,编译成功。
生成whl安装包
bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/tensorflow_pkg
(tf2) iqi@iqi-Super-Server:~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow$ bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/tensorflow_pkg 2019年 10月 29日 星期二 19:03:45 CST : === Preparing sources in dir: /tmp/tmp.AhRdeYfsPh ~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow ~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow ~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow /tmp/tmp.AhRdeYfsPh/tensorflow/include ~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow ~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow 2019年 10月 29日 星期二 19:04:09 CST : === Building wheel warning: no files found matching 'README' warning: no files found matching '*.pyd' under directory '*' warning: no files found matching '*.pd' under directory '*' warning: no files found matching '*.dylib' under directory '*' warning: no files found matching '*.dll' under directory '*' warning: no files found matching '*.lib' under directory '*' warning: no files found matching '*.csv' under directory '*' warning: no files found matching '*.h' under directory 'tensorflow_core/include/tensorflow' warning: no files found matching '*' under directory 'tensorflow_core/include/third_party' 2019年 10月 29日 星期二 19:04:36 CST : === Output wheel file is in: /home/iqi/tensorflow_pkg
(tf2) iqi@iqi-Super-Server:~/work/apq8053-le.um.1.3.r2-08400-8x53/poky/build/tensorflow-lite/tensorflow$ ls /home/iqi/tensorflow_pkg/tensorflow-2.0.0-cp37-cp37m-linux_x86_64.whl /home/iqi/tensorflow_pkg/tensorflow-2.0.0-cp37-cp37m-linux_x86_64.whl








