Android的Tensorflow示例
Tensorflow将此作为在Android应用程序上使用Tensorflow的示例 我已经成功构建了应用程序并在我的设备上启动了它。我也读了代码 但我不知道从这里该去哪里!我有一个tensorflow代码,根据训练数据计算精度 如何在我自己的android应用程序中使用该模型。tensorflow描述并不超出构建说明Android的Tensorflow示例,android,python-2.7,machine-learning,tensorflow,tensorflow-serving,Android,Python 2.7,Machine Learning,Tensorflow,Tensorflow Serving,Tensorflow将此作为在Android应用程序上使用Tensorflow的示例 我已经成功构建了应用程序并在我的设备上启动了它。我也读了代码 但我不知道从这里该去哪里!我有一个tensorflow代码,根据训练数据计算精度 如何在我自己的android应用程序中使用该模型。tensorflow描述并不超出构建说明 请帮忙 有一些很好的教程可以指导您完成这些步骤 假设我们讨论的是图像分类问题,您只需要: 使用strip\u unused工具处理TensorFlow模型(使其与Android
请帮忙 有一些很好的教程可以指导您完成这些步骤 假设我们讨论的是图像分类问题,您只需要:
- 使用
工具处理TensorFlow模型(使其与Android演示应用程序兼容)strip\u unused
- 将新标签的TensorFlow
模型和.pb
复制到Android.txt
文件夹中资产
- 再次构建Android演示应用程序
有关更多信息,请查看我在哪里写的如何执行此操作。首先,您需要将模型保存到.pb(protobuf)文件中。 在应用程序中,您需要加载此.pb文件。您可以使用
tf/python/tools freeze\u graph.freeze\u graph()
您也需要LIPTENSORFROUTION DENCUN。因此包含所有C++实现。 最后,您将需要libandroid\u tensorflow\u interference\u java.jar
有了这些,你可以写:inferenceInterface.initializeTensorFlow(getAssets(), MODEL_FILE);
inferenceInterface.fillNodeFloat(INPUT_NODE, INPUT_SIZE, inputFloats);
inferenceInterface.runInference(new String[] {OUTPUT_NODE});
inferenceInterface.readNodeFloat(OUTPUT_NODE, resu);
这里有一个很棒的教程:
应用程序的GitHub repo:
对我来说,这有助于理解Android上tf的基础知识。为Android构建TensorFlow的完整详细方法
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
注意:--递归子模块对于拉取子模块很重要
从这里安装Bazel。Bazel是TensorFlow的主要构建系统。
现在,编辑工作区,我们可以在前面克隆的TensorFlow的根目录中找到工作区文件
# Uncomment and update the paths in these entries to build the Android demo.
#android_sdk_repository(
# name = "androidsdk",
# api_level = 23,
# build_tools_version = "25.0.1",
# # Replace with path to Android SDK on your system
# path = "<PATH_TO_SDK>",
#)
#
#android_ndk_repository(
# name="androidndk",
# path="<PATH_TO_NDK>",
# api_level=14)
然后构建.so文件
bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so \
--crosstool_top=//external:android/crosstool \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
--cpu=armeabi-v7a
用我们期望的目标体系结构替换armeabi-v7a。
图书馆将设在:
bazel-bin/tensorflow/contrib/android/libtensorflow_inference.so
要构建Java对应项,请执行以下操作:
bazel build //tensorflow/contrib/android:android_tensorflow_inference_java
我们可以在以下位置找到JAR文件:
bazel-bin/tensorflow/contrib/android/libandroid_tensorflow_inference_java.jar
现在我们有了jar和.so文件。我已经构建了这两个.so文件和jar,您可以直接从中使用
将libandroid_tensorflow_expression_java.jar放入libs文件夹,右键单击并添加为库
compile files('libs/libandroid_tensorflow_inference_java.jar')
在主目录中创建jniLibs文件夹,并将libtensorflow_.so放入jniLibs/armeabi-v7a/文件夹中
现在,我们将能够调用TensorFlow Java API
TensorFlowJavaAPI通过一个类TensorFlow推论接口公开了所有必需的方法
现在,我们必须使用模型路径调用TensorFlow Java API并加载它
我写了一个完整的博客
compile files('libs/libandroid_tensorflow_inference_java.jar')