TensorFlow移动端机器学习实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 构建工具Bazel

大多数开发人员使用Android Studio + Gradle + Maven作为他们的日常工具,这种配置已经足够了。不过,笔者强烈建议使用Bazel,它是谷歌内部工具的开源版本。Bazel具有很多重要的功能,最新版本是Bazel 0.22,与1.0正式发布版本非常接近。很多离开谷歌的工程师,仍会继续使用Bazel。由Facebook开发的Buck与Bazel的功能非常相似。许多初创公司使用的也是Bazel工具。

Bazel的构建方法很简单,在Linux上执行下面的命令就可以安装Bazel:

sudo apt-get install bazel
sudo apt-get upgrade bazel

Android Studio也支持Bazel。在Android Studio上安装Bazel插件即可使用,安装Bazel插件的步骤如图2-4所示。

图2-4 在Android Studio上安装Bazel插件

TensorFlow中支持Gradle、Make和iOS的构建,谷歌内部不支持Gradle,只是在开源的时候会对其进行测试。

2.4.1 BazeI生成调试

生成调试命令为:

bazel build --compilation_mode=dbg //tensorflow/lite/toco

2.4.2 BazeI Query命令

如果读者想找出tensorflow/python/saved_model和tensorflow/core/kernels:slice_op算子之间的关系,可以执行bazel query "somepath(tensorflow/python/saved_model, tensorflow/core/kernels:slice_op)",执行结果如下:

//tensorflow/python/saved_model:saved_model
//tensorflow/python/saved_model:builder
//tensorflow/python:lib
//tensorflow/python:pywrap_tensorflow
//tensorflow/python:pywrap_tensorflow_internal
//tensorflow/python:_pywrap_tensorflow_internal.so
//tensorflow/python:tf_session_helper
//tensorflow/core:all_kernels
//tensorflow/core/kernels:array
//tensorflow/core/kernels:slice_op

如果读者想找出//tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo和//tensorflow/contrib/lite/kernels:builtin_ops算子之间的依赖关系,可以执行bazel query"somepath(//tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo, //tensorflow/c ontrib/lite/kernels:builtin_ops)",执行结果如下:

//tensorflow/lite/java/demo/app/src/main:TfLiteCameraDemo
//tensorflow/lite/java:tensorflowlite
//tensorflow/lite/java:tflite_runtime
//tensorflow/lite/java:libtensorflowlite_jni.so
//tensorflow/lite/java/src/main/native:native
//tensorflow/lite/kernels:builtin_ops

除Android特有的设定外,我们还要做TensorFlow的标准设定,具体的步骤请参考网页https://docs.bazel.build/versions/master/user-manual.html