【问题标题】:TensorFlowInferenceInterface returning low valuesTensorFlowInferenceInterface 返回低值
【发布时间】:2018-06-10 07:00:57
【问题描述】:

我正在编写一个 Android 应用程序,该应用程序使用 Keras 模型通过 .pb 文件将叶子分类为健康或不健康。我正在使用 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", output);

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

【问题讨论】:

    标签: android tensorflow keras


    【解决方案1】:

    根据您的问题,当您在训练后在 jupyter notebook 上运行时,您会得到正确的输出,但在使用 Tensorflow 推理接口运行时,您会得到错误的结果。

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

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

    在你冻结它们之后,你需要优化图,通常图会有大部分你在推理过程中不需要的操作,所以你需要通过优化图来去除它们。

    参见Tensorflow的this模块优化协议缓冲区

    最后在 android 中运行这个 .pb。

    如果您完成了所有这些步骤,请告诉我!

    【讨论】:

    • 我已经完成了所有这些,但我仍然收到上述错误。
    • 好的,请发布您的 pbtxt。
    猜你喜欢
    • 2011-07-04
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多