TensorFlow编译androiddemo
首先是把tensorflow
克隆到本地一份。
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
既然是谷歌官方要求的,最好把--recurse-submodules
加上,文档说可以避免一些数据结构序列化时的编译问题。
准备编译
1.安装bazel
bazel
是谷歌自己的构建工具。tensorflow
只能部分支持cmake
或者gradle
,而bazel
是tensorflow
工程的主要构建工具。
Mac和Linux用户根据文档进行安装。Windows用户,按照官方建议到下面的链接下载demo的二apk文件,目前bazel在windows平台还处于试验阶段。
bazel
安装成功与否,用bazel version
检查版本即可。
2.下载NDK
最好下载r12b
版本的,最新的r13b
可能与bazel
有兼容问题。
下载完成后解压到自定义目录,然后在~/.bash_profile
(linux
在~/.bashrc
)下添加环境变量。环境变量的添加过程大家百度一下吧,不是这里的重点。
3.下载>=23 Android SDK
Tensorflow Android Demo
必须在大于等于23
的API
环境中编译。可以打开Android Studio
中的SDK Manager
来安装最新的SDK
。
4. 编辑Tensorflow根目录下的WORKSPACE文件
回到tensorflow
根目录,(当前在android
目录就往上两级)。打开WORKSPACE
文件。
在文件开头部分找到
# Uncomment and update the paths in these entries to build the Android demo.
#android_sdk_repository(
# name = "androidsdk",
# api_level = ,
# # Ensure that you have the build_tools_version below installed in the
# # SDK manager as it updates periodically.
# build_tools_version = "25.0.2",
# # Replace with path to Android SDK on your system
# path = "/path/to/your/sdk",
#) # Android NDK r12b is recommended (higher may cause issues with Bazel)
#android_ndk_repository(
# name="androidndk",
# path="/path/to/your/ndk",
# # This needs to be or higher to compile TensorFlow.
# # Note that the NDK version is not the API level.
# api_level=)
这两部分定义了SDK
和NDK
的路径,把/path/to/your
的部分改成系统相应的路径。然后将每一行前的注释去掉。如下:
# Uncomment and update the paths in these entries to build the Android demo.
android_sdk_repository(
name = "androidsdk",
api_level = ,
# Ensure that you have the build_tools_version below installed in the
# SDK manager as it updates periodically.
build_tools_version = "25.0.2",
# Replace with path to Android SDK on your system
path = "/Users/XXX/Library/Android/sdk",
)
#
# Android NDK r12b is recommended (higher may cause issues with Bazel)
android_ndk_repository(
name="androidndk",
path="/usr/local/lib/android-ndk-r12b",
# This needs to be or higher to compile TensorFlow.
# Note that the NDK version is not the API level.
api_level=)
开始编译
在tansorflow
根目录执行,
bazel build -c opt //tensorflow/examples/android:tensorflow_demo
进行编译,变异过程如下:
一切顺利的话,编译成功,如下图:
安装APK DEMO
变异成功之后bazel
会在bazel-bin
目录下面生成apk
文件。用数据线连上手机,执行
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
即可安装到手机。
TensorFlow编译androiddemo的更多相关文章
- Bazel 编译工具; tensorflow 编译
什么是bazel https://docs.bazel.build/versions/master/bazel-overview.html 使用 bazel 构建 c++ 工程 https://git ...
- tensorflow编译成功!
使用bazel编译tensorflow项目的core包成功!找了个简单的target可视化,留作纪念,命令如下: bazel query --noimplicit_deps --nohost_deps ...
- 在Windows*上编译Tensorflow教程
背景介绍 最简单的 Tensorflow 的安装方法是在 pip 一键式安装官方预编译好的包 pip install tensorflow 通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最 ...
- tensorflow安装
Ubuntu安装tensorflow先安装python-dev,再安装tensorflow就好了$ sudo apt-get install python-dev$ pip install https ...
- Android 项目使用TensorFlow
Android 项目使用TensorFlow 首先需要搭建TensorFlow编译环境 参考:(http://www.cnblogs.com/dyufei/p/8027764.html) Tensor ...
- Jetson TX2安装tensorflow(原创)
Jetson TX2安装tensorflow 大致分为两步: 一.划分虚拟内存 原因:Jetson TX2自带8G内存这个内存空间在安装tensorflow编译过程中会出现内存溢出引发的安装进程奔溃 ...
- tensorflow项目构建流程
https://blog.csdn.net/hjimce/article/details/51899683 一.构建路线 个人感觉对于任何一个深度学习库,如mxnet.tensorflow.thean ...
- 在Ubuntu 18.04上安装Tensorflow
我们将经历几个阶段,安装cuda-9.0,cudnn和tensorflow cpu以及tensorflow gpu版本.最后我们将用cuda-9.0安装pytorch.在MARVEl电影中黑寡妇的“我 ...
- 在Ubuntu 16.04上使用bazel交叉编译tensorflow
鸽了这么久,正式开工 Author: carbon email: ecras_y@163.com 参考资料: https://github.com/tensorflow/tensorflow http ...
随机推荐
- POJ 2378 Tree Cutting 3140 Contestants Division (简单树形dp)
POJ 2378 Tree Cutting:题意 求删除哪些单点后产生的森林中的每一棵树的大小都小于等于原树大小的一半 #include<cstdio> #include<cstri ...
- Codeforces Round #300 A. Cutting Banner 水题
A. Cutting Banner Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/pro ...
- PAT甲级1095. Cars on Campus
PAT甲级1095. Cars on Campus 题意: 浙江大学有6个校区和很多门.从每个门口,我们可以收集穿过大门的汽车的进/出时间和车牌号码.现在有了所有的信息,你应该在任何特定的时间点告诉在 ...
- ExtJs2.0学习系列(12)--Ext.TreePanel之第一式
今天开始,我们就开始一起学习TreePanel了,道个歉,上篇的代码很乱阿. 我总是喜欢用最简单的例子开始,去理解最基本的使用方法,减少对i后面高级使用的干扰! TreePanel是继承自Panel, ...
- CentOS 6.9永久设置静态路由表以及路由表常用设置
一.路由表常用设置: 1.使用route命令添加的路由,机器重启或者网卡重启后路由就失效了,方法: //添加到主机的路由 # route add –host 192.168.1.11 dev eth0 ...
- 分享我用Taker做任务时需要的各种资源的精华帖,方便查阅
http://tieba.baidu.com/p/2310764470 第一名 [Tasker论坛] https://groups.google.com/group/tasker/?pli=1http ...
- 字符集UTFMB4
http://my.oschina.net/leejun2005/blog/232732#OSC_h3_4 http://ju.outofmemory.cn/entry/211473
- JSON数据转换到POCO的代码
转载:http://www.cnblogs.com/wintersun/archive/2012/09/14/2684708.html 在Visual Studio 2012中轻松把JSON数据转换到 ...
- arcgis Listview
private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCrea ...
- Webstorm实时编译SASS和LESS
Webstorm自带一个File Watchers功能,设置一下,即可实时编译SASS,LESS等 菜单:File->Settings->左栏Tools下的File Watchers,按右 ...