
586
|
第
19
章
请注意,你可以将 /versions/0001(或任何其他版本号)附加到 model_path 上以
指定要查询的版本:这对于 A / B 测试或在广泛发布新版本之前在一小群用户中测试新
版本很有用(这叫作金丝雀(canary))。接下来,让我们编写一个小函数,该函数将使
用资源对象调用预测服务并返回预测:
def
predict(X):
input_data_json = {"signature_name": "serving_default",
"instances": X.tolist()}
request = ml_resource.predict(name=model_path, body=input_data_json)
response = request.execute()
if
"error"
in
response:
raise RuntimeError
(response["error"])
return
np.array([pred[output_name] for pred
in
response["predictions"]])
该函数使用一个包含输入图像的 NumPy 数组,并准备一个字典,客户端库将其转换为
JSON 格式(就像我们之前所做的那样)。然后它准备一个预测请求并执行它。如果响应
中包含错误,它将引发异常,否则它将提取每个实例的预测并将其合并在 NumPy 数组
中。让我们看看它是否有效:
>>>
Y_probas = predict(X_new) ...