TensorFlowInferenceInterface返回低值

时间:2018-06-10 07:00:57

标签: android tensorflow keras

我正在编写一个Android应用程序,它通过.pb文件使用Keras模型将叶子分类为健康或不健康。我使用TensorFlow与Android接口,特别是TensorFlowInferenceInterface类。我的代码引用如下:

  

inferenceInterface.feed(“conv2d_1_input”,input,1,WIDTH,HEIGHT,3);           inferenceInterface.run(new String [] {“activation_7 / Sigmoid”});           inferenceInterface.fetch(“activation_7 / Sigmoid”,输出);

当我使用Keras从Jupyter笔记本运行.pb网络时,它会输出通常范围内的值(0到1)。但是,当我使用上面的代码和完全相同的图像文件运行它时,它永远不会给出大于0.1的值,这表示非常不健康的叶子。任何输入都会有所帮助。

1 个答案:

答案 0 :(得分:0)

根据您的问题,在训练后运行jupyter笔记本时,您可以获得正确的输出,但在使用Tensorflow推理界面运行时,您的结果会出错。

请参阅使用Tensorflow Mobile在Android中运行.pb,首先需要冻结所有变量(将图中所有可训练和不可训练的变量转换为常量)。

请参阅Tensorflow的this模块以冻结协议缓冲区(.pb)

让它们冻结后,您需要优化图形,通常图形将包含推理过程中不需要的大多数操作,因此您需要通过优化图形来删除它们。

请参阅Tensorflow的this模块以优化协议缓冲区

最后在android中运行.pb。

如果你做了所有这些步骤,请告诉我们!