在Google ML上运行导出的Inception模型:期望float32类型但得到的是’str’

我使用retrain.py示例重新训练了Inception模型,并使用–saved_model_dir标志导出了模型,以便在最后进行服务部署。

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

我的请求看起来像这样:

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

但我收到的错误信息是:

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

retrain.py中的导出示例是否不适合用于Google ML引擎?


回答:

错误信息表明导出的模型期望的是浮点数数组而不是原始图像字节。我通过代码追踪确认了这一点。具体来说,export_model调用了build_eval_session来获取resized_input_tensor,它是在create_module_graph中创建的,如下所示(链接):

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

因此,数据应该看起来像这样:

{  "image": [    [      [0.0, 0.0, 0.0],        # ... (条目数 = 高度)    ],    # (条目数 = 宽度)  ]}

当然,这种编码图像的方式(将浮点数作为ASCII)相当低效。如果预期的图像尺寸较小(通常是200 x 200),这还不算太糟糕。更好的方法是,如果示例的作者允许通过调用add_jpeg_decoding来导出模型作为模型的入口点,这样你就可以像你现在尝试的那样发送数据了。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注