测试预测时报'serving_default not found in signature def'错误是什么原因
错误原因
谷歌云Wide&Deep预构建算法导出的SavedModel模型,默认服务签名名称并非AI平台预测接口默认调用的serving_default,而是专属的predict签名,因此直接调用会触发签名不存在的报错。
修复方案
REST API调用修复(适配你当前的调用方式)
在请求JSON中新增signature_name字段,指定值为predict即可,修改后的完整请求内容如下:
{ "signature_name": "predict", "instances": [ {"csv_row": "44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States", "key": "dummy-key"} ] }
gcloud命令行调用修复
如果使用gcloud命令发起预测,额外添加--signature-name predict参数即可,示例命令:
gcloud ai-platform predict \ --model <替换为你的模型名> \ --version <替换为你的模型版本号> \ --json-instances <替换为你的请求实例文件路径> \ --signature-name predict
可选验证步骤
如果需要确认模型支持的所有签名,可以用TensorFlow自带工具查询,命令如下:
saved_model_cli show --dir <替换为你的SavedModel本地文件夹路径> --all
执行后在输出的signature_def段落可以看到所有可用签名,Wide&Deep预构建算法的导出模型只会存在predict签名,不存在serving_default签名。
内容的提问来源于stack exchange,提问作者Grafgurke
相关产品推荐
相关产品推荐

