无法对在AWS Sagemaker上部署的模型终端节点进行API调用

时间:2020-05-26 21:47:09

标签: python image amazon-web-services tensorflow amazon-sagemaker

我们已经训练了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"}".

有人知道正确的图像输入格式应该是什么,或者有什么建议吗?谢谢

0 个答案:

没有答案