直接在Android NDK端使用tensorflow(不使用JAVA api)

我试图在C上运行 Android上的神经网络.示例( https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/android)显示了如何使用JAVA apis使用tensorflow,它使用JNI函数调用C.有没有人试图在Android上的C中直接使用tensorflow?如何在Android上使用C apis构建和链接tensorflow库.你能指导我吗?我想在Android上以类似于iOS示例的方式使用C apis.

解决方法

这是我如何解决这个问题.虽然没有太多关于在an​​droid上使用c apis以及编译和链接tensorflow到NDK的文档,但是makefile有重要的注释以及相关的脚本.编译步骤与ios非常相似.

>安装以下依赖关系a)autoconf b)automake c)automake.然后运行tensorflow / contrib / makefile / download_dependencies.sh;我第一次运行2017年5月10日的存储库,当它完美运行时.在6月1日左右的更高版本中,由于tensorflow / workspace.bzl的一些变化,我在download_dependencies.sh中无法理解,无法识别tar_dependencies正在尝试下载的tar文件.我刚从5月10日的repo commit中替换了workspace.bzl.
>第2步是像这样运行tensorflow / contrib / makefile / compile_android_protobuf.sh

NDK_ROOT =绝对/路径/到/ ndk /文件夹./tensorflow/contrib/makefile/compile_android_protobuf.sh
>运行make.但首先您可能需要在Makefile中进行一些更改.用-fPIC标志替换-fPIE标志.还要将-fPIC标志添加到HOST_CXXFLAGS.然后像这样运行make:

make -f tensorflow / contrib / makefile / Makefile TARGET = ANDROID NDK_ROOT = absolute / path / to / ndk / folder

或者,也可以运行build_all_android.sh,它一次运行所有3个步骤,但您可能需要对标志进行Makefile更改.

生成了tensorflow / contrib / makefile / gen / protobuf / lib / libprotobuf.a和tensorflow / contrib / makefile / gen / lib / libtensorflow-core.a;这可以链接到LOCAL_LDLIBS下的Android.mk文件中的Android NDK项目.应该使用这些链接标志-Wl,– build-id -Wl,– allow-multiple-deFinition -Wl,– whole-archive同时-std = c 11在Android.mk文件中的LOCAL_CFLAGS和APP_STL:= gnustl_shared在Application.mk文件中.

这应该足以构建NDK项目的共享库.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...