Tensorflow 服务后 API 调用

问题描述 投票:0回答:1

如何处理此错误:“无法获取签名的输入映射:serving_default”

当提供给 TensorFlow Serving API 的输入数据格式与模型签名中定义的预期输入格式不匹配时,通常会发生此错误。要解决此问题,请按照下列步骤操作:

  1. 检查模型签名:确保您按照模型签名的预期以正确的格式提供输入数据。输入格式(例如数据类型、形状)应符合签名的输入要求。

  2. 数据预处理:如果模型需要对输入数据进行特定预处理(例如调整大小、标准化),请确保在将图像发送到模型之前对图像进行相应的预处理。

  3. JSON 请求格式: 确保您发送到 TensorFlow Serving 的 JSON 请求格式正确。

    instances
    字段应包含输入列表,其中每个输入都与模型输入签名的预期格式匹配。

  4. 检查模型版本:如果您使用的是特定版本的模型,请确保在 API 请求中指定正确的版本(

    url
    变量)。

以下是使用 TensorFlow Serving 发送图像进行预测的格式正确的代码示例:

import requests
import json
import numpy as np
import base64
import cv2

# Replace this with the actual image path you want to test
image_path = 'H_L_.jpg'

# Read and preprocess the image
image = cv2.imread(image_path)
image = cv2.resize(image, (256, 256))
image = image.astype(np.float32) / 255.0
image = np.expand_dims(image, axis=0)

# Convert the NumPy array to bytes before encoding
encoded_image = base64.b64encode(image.tobytes()).decode('utf-8')

# Prepare the JSON request with the signature name
data = {
    "signature_name": "serving_default",
    "instances": [{"input_1": encoded_image}]  # Adjust the input key based on your model's signature
}
# Replace these labels with your actual labels
labels = ['Potato___Early_blight', 'Potato___Late_blight', 'Potato___healthy']

# Send the inference request to TensorFlow Serving
url = 'http://localhost:8501/v1/models/model:predict'  # Replace 'model' with the actual model name and version
headers = {"content-type": "application/json"}
response = requests.post(url, data=json.dumps(data), headers=headers)

# Process the response
if response.status_code == 200:
    predictions = response.json()['predictions'][0]
    predicted_class_idx = np.argmax(predictions)
    predicted_label = labels[predicted_class_idx]
    print("Predicted Label:", predicted_label)
    print("Class Probabilities:", predictions)
else:
    print("Error: Unable to get predictions. Status code:", response.status_code)
    print("Response content:", response.content)
tensorflow post deep-learning conv-neural-network tensorflow-serving
1个回答
0
投票

您的模型似乎没有名为

signature_default
的签名。请显示
saved_model_cli show --dir /path/to/your/model --all
的结果好吗?

© www.soinside.com 2019 - 2024. All rights reserved.