我已经在Tensorflow中训练了具有两个功能(国家和浏览器)的模型。数据中缺少一些值。因此,我使用了默认值。
我的目标是在Cloud Machine Learning中部署模型。在CML中部署模型之前,我在浏览器中调用了缺少值的模型。我使用的json是以下内容:
{"country": "Venezuela"}
json中缺少浏览器。我设法使用此json进行预测。
我使用以下代码来获取预测:
gcloud ml-engine local predict \
--model-dir=${PWD}/brave_trained_missing/export/exporter/1558617476 \
--json-instances=./test.json
我将模型部署在GCP上并重复相同的过程。但是我得到一个错误:
"error": "Prediction failed: Error during model execution: AbortionError(code=StatusCode.INVALID_ARGUMENT, details=\"input size does not match signature\")"
我更改json并添加具有空值的变量:
{"country": "Venezuela", "browser": null}
但是随后出现以下错误:
{
"error": "Prediction failed: Error processing input: Expected string, got None of type '_Message' instead."
}
我通过以下方式创建服务功能:
def serving_input_fn():
json_feature_placeholders = {
'country' : tf.placeholder_with_default(
input = ['Zimbabwe'],
shape = [None]
),
'browser' : tf.placeholder_with_default(
input = ['Opera'],
shape = [None]
)
}
然后我通过以下命令行调用GCP预测:
gcloud ml-engine predict --model=${MODEL_NAME} --version=${MODEL_VERSION} --json-instances=./test.json
有人知道会发生什么吗?