代码之家  ›  专栏  ›  技术社区  ›  Stromgren

在google ml上运行导出的inception:expected float32得到“str”

  •  0
  • Stromgren  · 技术社区  · 6 年前

    我使用 retrain.py 示例并使用--saved_model_dir标志导出模型以供最终服务。

    我成功地将最终的模型上传到了GoogleMl引擎上,现在我正在尝试运行它的预测。

    我的请求如下:

    {"image": {"b64": "/9j/4AAQxh6AP/2Q== ..."}}
    

    但我得到一个错误回复说:

    {"error": "Prediction failed: Error processing input: Expected float32, got '\\xff\\xd8\\xff\\xe0 ...' of type 'str' instead."}
    

    retain.py中的导出示例是否不导出用于Google ML引擎的模型?

    1 回复  |  直到 6 年前
        1
  •  1
  •   rhaertel80    6 年前

    错误消息表明导出的模型需要浮点数组而不是原始图像字节。我查了一遍代码来确认这一点。明确地, export_model 电话 build_eval_session 得到 resized_input_tensor 创建于 create_module_graph 如下( link ):

    resized_input_tensor = tf.placeholder(tf.float32, [None, height, width, 3])
    

    因此,预期数据如下所示:

    {
      "image": [
        [
          [0.0, 0.0, 0.0],
            # ... (num entries = height)
        ],
        # (num entries = width)
      ]
    }
    

    当然,这是一种效率相当低的图像编码方法(以ASCII形式浮动)。如果期望的图像大小很小(通常是200 x 200),这并不可怕。如果示例的作者允许导出模型并调用 add_jpeg_decoding 作为模型的入口点,它允许您在当前尝试发送数据时发送数据。