首页 > 解决方案 > Amazon SageMaker 不支持的内容类型应用程序/x-image

问题描述

我在 Sagemaker 中部署了一个基于 tensorflow/keras 的 CNN 模型。

现在调用推理,我按照本教程

下面的代码片段

def inferImage(endpoint_name):
    # Load the image bytes
    img = open('./shoe.jpg', 'rb').read()
    runtime = boto3.Session().client(service_name='sagemaker-runtime')

    # Call your model for predicting which object appears in this image.
    response = runtime.invoke_endpoint(
        EndpointName=endpoint_name,
        ContentType='application/x-image',
        Body=bytearray(img))
    response_body = response['Body']
    print(response_body.read()) 

当我运行此代码时,出现错误

Unsupported content-type application/x-image

我错过了什么?关于如何修复它的任何建议?

标签: amazon-web-servicesamazon-sagemaker

解决方案


你用过 SageMaker python sdk 吗?如果是,您可以参考此自述文件https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/tensorflow/deploying_python.rst 并提供您自己的 input_fn() 来处理 application/ x 图像数据。

如果您没有在用户脚本中提供自定义的 input_fn(),默认的 input_fn 只能处理 3 种类型:“application/json”、“text/csv”和“application/octet-stream”

此处抛出异常:https ://github.com/aws/sagemaker-tensorflow-container/blob/1e74bc6440cdd7e083d15026869e021c5ab504a4/src/tf_container/serve.py#L239


推荐阅读