Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android的Tensorflow示例_Android_Python 2.7_Machine Learning_Tensorflow_Tensorflow Serving - Fatal编程技术网

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应用程序上使用Tensorflow的示例

我已经成功构建了应用程序并在我的设备上启动了它。我也读了代码

但我不知道从这里该去哪里!我有一个tensorflow代码,根据训练数据计算精度

如何在我自己的android应用程序中使用该模型。tensorflow描述并不超出构建说明


请帮忙

有一些很好的教程可以指导您完成这些步骤

假设我们讨论的是图像分类问题,您只需要:

  • 使用
    strip\u unused
    工具处理TensorFlow模型(使其与Android演示应用程序兼容)
  • 将新标签的TensorFlow
    .pb
    模型和
    .txt
    复制到Android
    资产
    文件夹中
  • 再次构建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')