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

前端之家收集整理的这篇文章主要介绍了直接在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项目的共享库.

原文链接:https://www.f2er.com/android/315198.html

猜你在找的Android相关文章