通过CloudML获取TFrecords的批量预测

我按照这个优秀的教程成功地在CloudML上训练了一个模型。我的代码也可以离线进行预测,但现在我试图使用Cloud ML进行预测时遇到了一些问题。

为了部署我的模型,我遵循了这个教程。现在我有一段代码通过apache_beam.io.WriteToTFRecord生成TFRecords,我想为这些TFRecords进行预测。为此,我正在按照这篇文章进行操作,我的命令如下所示:

gcloud ml-engine jobs submit prediction $JOB_ID --model $MODEL --input-paths gs://"$FILE_INPUT".gz --output-path gs://"$OUTPUT"/predictions --region us-west1 --data-format TF_RECORD_GZIP

但我只得到了错误:'Exception during running the graph: Expected serialized to be a scalar, got shape: [64]'

看起来它期望数据采用不同的格式。我找到了JSON格式的规格在这里,但没有找到如何用TFrecords来做的方法。

更新:这是saved_model_cli show --all --dir的输出

MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:signature_def['prediction']:  The given SavedModel SignatureDef contains the following input(s):    inputs['example_proto'] tensor_info:    dtype: DT_STRING    shape: unknown_rank    name: input:0  The given SavedModel SignatureDef contains the following output(s):    outputs['probability'] tensor_info:    dtype: DT_FLOAT    shape: (1, 1)    name: probability:0  Method name is: tensorflow/serving/predictsignature_def['serving_default']:  The given SavedModel SignatureDef contains the following input(s):    inputs['example_proto'] tensor_info:    dtype: DT_STRING    shape: unknown_rank    name: input:0  The given SavedModel SignatureDef contains the following output(s):    outputs['probability'] tensor_info:    dtype: DT_FLOAT    shape: (1, 1)    name: probability:0  Method name is: tensorflow/serving/predict

回答:

在导出您的模型时,您需要确保它是“可批处理的”,即输入占位符的外部维度应设置为shape=[None],例如:

input = tf.Placeholder(dtype=tf.string, shape=[None])...

这可能需要对图进行一些修改。例如,我看到您的输出的形状被硬编码为[1,1]。最外层的维度应该是None,这可能在您修复占位符时自动发生,或者可能需要其他更改。

考虑到输出的名称是probabilities,我还期望最内层的维度大于1,即预测的类别数量,因此应为[None, NUM_CLASSES]的形式。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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