在 TensorFlow Serving 中,你可以使用 REST API 向模型发送多个输入的字典。以下是一个详细的步骤指南,展示如何使用 REST API 向 TensorFlow Serving 模型发送包含多个输入的字典。
首先,确保你已经启动了 TensorFlow Serving 并加载了你的模型。假设你的模型名称是 my_model
,并且它在端口 8501 上运行。
docker run -p 8501:8501 --name=tfserving_my_model --mount type=bind,source=/path/to/your/model,destination=/models/my_model -e MODEL_NAME=my_model -t tensorflow/serving
假设你的模型接受两个输入:input_1
和 input_2
。你需要将这些输入数据组织成一个字典,并将其转换为 JSON 格式。
import json
# 准备输入数据
data = {
"signature_name": "serving_default",
"instances": [
{
"input_1": [1.0, 2.0, 3.0],
"input_2": [4.0, 5.0, 6.0]
},
{
"input_1": [7.0, 8.0, 9.0],
"input_2": [10.0, 11.0, 12.0]
}
]
}
# 将数据转换为 JSON 格式
json_data = json.dumps(data)
使用 requests
库向 TensorFlow Serving 发送 POST 请求。
import requests
# TensorFlow Serving REST API URL
url = 'http://localhost:8501/v1/models/my_model:predict'
# 发送 POST 请求
response = requests.post(url, data=json_data, headers={"content-type": "application/json"})
# 打印响应
print(response.json())
响应将包含模型的预测结果。你可以根据需要处理这些结果。
# 处理响应
predictions = response.json()['predictions']
for i, prediction in enumerate(predictions):
print(f"Prediction for instance {i}: {prediction}")
以下是一个完整的示例代码,展示了如何准备输入数据、发送请求并处理响应。
import json
import requests
# 准备输入数据
data = {
"signature_name": "serving_default",
"instances": [
{
"input_1": [1.0, 2.0, 3.0],
"input_2": [4.0, 5.0, 6.0]
},
{
"input_1": [7.0, 8.0, 9.0],
"input_2": [10.0, 11.0, 12.0]
}
]
}
# 将数据转换为 JSON 格式
json_data = json.dumps(data)
# TensorFlow Serving REST API URL
url = 'http://localhost:8501/v1/models/my_model:predict'
# 发送 POST 请求
response = requests.post(url, data=json_data, headers={"content-type": "application/json"})
# 打印响应
print(response.json())
# 处理响应
predictions = response.json()['predictions']
for i, prediction in enumerate(predictions):
print(f"Prediction for instance {i}: {prediction}")
signature_name
与模型的签名名称匹配。默认情况下,TensorFlow Serving 使用 serving_default
签名。领取专属 10元无门槛券
手把手带您无忧上云