当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《直接在AndroidNDK端使用tensorflow(不使用JAVAapi)》经验,为你挑选了1个好方法。

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



1> Ruppesh Nalw..:

这是我解决此问题的方法。尽管没有太多关于在an​​droid上使用c ++ api以及将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文件download_dependencies正在尝试下载。我只是从5月10日回购提交中替换了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 =绝对/路径/到/ ndk /文件夹

    另外,也可以一次运行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在Android.mk文件中的LOCAL_CFLAGS中使用-std = c ++ 11,在Application.mk文件中使用APP_STL:= gnustl_shared。

这足以构建您的NDK项目的共享库。

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有