如何在 Android 应用中使用 TensorflowInferenceInterface

我在我的 Android 应用程序中使用经过训练的模型(冻结图),该模型利用了 Tensorflow 的预制 estimator iris 示例,如下链接所示:


https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/learn/iris.py


我修改了 iris.py 以满足我的需要,并添加了一些语句来冻结图形,以便我将 .pb 文件放入我的 Android 应用程序的资产文件夹中。


为了在我的 Android 应用程序中使用 Tensorflow,我在我的 build.gradle (Module: app) 文件(依赖项块中的最后一条语句)中添加了以下行。


dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:27.1.1'

    implementation 'com.android.support.constraint:constraint-layout:1.1.2'

    implementation 'no.nordicsemi.android.support.v18:scanner:1.0.0'

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'com.android.support.test:runner:1.0.2'

    androidTestImplementation 'com.android.support.test.espresso:espresso- 

    core:3.0.2'

    implementation 'org.tensorflow:tensorflow-android:+'

}

有了我的冻结图,我通过执行以下语句来测试 Tensorflow 是否正在运行我的应用程序:


    //testing tensorflow feature

    TensorFlowInferenceInterface tfInterface = new 

    TensorFlowInferenceInterface(

            getAssets(), "estimator_frozen_graph.pb");

    Graph graph = tfInterface.graph();

    Toast.makeText(ScanActivity.this, "Tensorflow Graph Init Success", 

    Toast.LENGTH_SHORT).show();


    int[] inputValues = {1, 1, 121, 800, 300};

    long rowDim = 1;

    long columnDim = 5;


    tfInterface.feed("dnn/input_from_feature_columns/input_layer/concat:0",

            inputValues, rowDim, columnDim);

    String[] outputNames = {"dnn/logits/BiasAdd:0"};

    boolean logstats = false;

    tfInterface.run(outputNames, logstats);

    float[] outputs = new float[6];

    tfInterface.fetch("dnn/logits/BiasAdd:0", outputs);

    for(int i = 0; i<= outputs.length; i++)

    {

        System.out.println(outputs[i]);

    }

当程序到达该行时:


tfInterface.run(outputNames, logstats);


我一直在寻找类似的问题和问题,但似乎找不到解决此问题的可行方法。


请告诉我是否需要添加任何信息以简化在此处获取帮助的过程。提前致谢


小怪兽爱吃肉
浏览 258回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java