2017-03-21 21 views
2

我已经用了很长一段时间的预测命令开始遇到错误本周末:云毫升预测FAILED_PRECONDITION和价值领域projectsId]

$ gcloud beta ml predict --model my_model --json-instances my_instance.json 

WARNING: The `gcloud beta ml` commands have been renamed and will soon be removed. Please use `gcloud ml-engine` instead. 
ERROR: (gcloud.beta.ml.predict) value for field [projectsId] for in collection [ml.projects.models] is required but was not provided 

我不知道如何修正这个错误。

探讨错误是否与即将被删除“云测试毫升”命令相关,我与“gcloud毫升引擎”取代它,但是遇到了这样的错误:

$ gcloud ml-engine predict --model my_model --json-instances my_instance.json 
ERROR: (gcloud.ml-engine.predict) HTTP request failed. Response: { 
    "error": { 
    "code": 400, 
    "message": "Precondition check failed.", 
    "status": "FAILED_PRECONDITION" 
    } 
} 

我不明白如何解决这个第二个错误。据推测,其根本原因与第一个错误相同。

如何获得有关修复此错误的更多详细信息?

注意:这个问题看起来类似于这个other question问@jbird,但不一样。

+0

实际上,我有同样的问题,尽管使用'gcloud毫升引擎本地predict'使用完全相同的模型和实例数据时预测的工作就好了。迄今为止,没有运气好的解决方案。 – kbhomes

+0

@kbhomes你也得到了同样的错误我(“......现场[projectsId]值的集合......”)为‘gcloud测试毫升预测’? –

+0

是的,我也得到了这个错误(虽然我今天刚开始使用ML引擎,所以我以前不使用'gcloud beta ml预测') – kbhomes

回答

3

gcloud工具已更新,因此ml-engine命令集是官方支持的与服务交互的方式。代码路径gcloud beta ml已过期。下面应该工作:

gcloud beta ml-engine predict --model my_model --json-instances my_instance.json 

(注意关键字beta的存在)。

使用gcloud ml-engine predict(注意缺少关键字beta)时出现400错误的原因是因为您的型号不是SavedModel。在那组命令(非beta)中,我们只支持SavedModel。

您可以通过旧的端点(gcloud beta ...)继续使用现有的模型,但我们预计很快就会弃用该功能,因此我们建议将新模型导出为SavedModels并通过gcloud ml-engine进行部署。

+0

标记为已答复,谢谢!当您“建议将新模型导出为SavedModels”时,请说明我的现有模型意味着什么? (我现有的模特使用https://cloud.google.com/blog/big-data/2016/12/how-to-train-and-classify-images-using-google-cloud-machine-learning-和-cloud-dataflow)。有没有办法让一个人转换现有的模型,而一个人需要训练一个全新的模型? –

+0

@ rhaertel80我对这个困惑,因为像我@ChuckFinley用他链接的训练方法,非常精确地运行代码并获得'saved_model.pb'文件和'variables'文件夹,并在事实上代码使用'SavedModelBuilder'来导出模型。这不是与ML引擎兼容的SavedModel吗?此外,'gcloud ml-engine local predict'在我的机器上完全适用于完全相同的型号。你用什么命令部署模型,您使用的预测是什么 – kbhomes

+0

@kbhomes(密切关注'beta'与不和'ml'与'ML-engine')。 – rhaertel80