我们已经训练了Nasnet模型,并将该模型成功部署为AWS Sagemaker上的端点。在本地加载模型时,可以做出预测,但是我不确定在调用API端点时传递图像的格式。
作为参考,使用tf.keras.load_model加载时,模型的输入如下:
[<tf.Tensor 'input_2:0' shape=(None, 331, 331, 3) dtype=float32>]
此外,这是用于构建模型的函数,其中包含模型的predict_signature_def
def build(loaded_model, export_dir):
build = builder.SavedModelBuilder(export_dir)
print("INPUT FORMAT:")
print(loaded_model.input)
signature = predict_signature_def(inputs={"inputs": loaded_model.input}, outputs={"score": loaded_model.output})
with K.get_session() as sess:
# Save the meta graph and variables
build.add_meta_graph_and_variables(
sess=sess, tags=[tag_constants.SERVING], signature_def_map={"serving_default": signature})
build.save()
我们尝试以以下格式对端点进行API调用:
client = boto3.client('runtime.sagemaker',
region_name='us-east-1',
aws_access_key_id='ACCESS_KEY',
aws_secret_access_key='SECRET_KEY')
with open("kitchen.jpg", "rb") as image:
f = image.read()
b = bytearray(f)
response = client.invoke_endpoint(EndpointName='ENDPOINT_NAME_HERE',
Body=b)
我们尝试对主体中的图像(bytearray,base64,numpy数组)进行多种格式传递。但是,我们不断从AWS收到相同的错误:
Received client error (415) from model with message "{"error": "Unsupported Media Type: Unknown"}".
有人知道正确的图像输入格式应该是什么,或者有什么建议吗?谢谢