代码之家  ›  专栏  ›  技术社区  ›  nad

解析来自AWS SageMaker的boto3 invoke_端点响应

  •  0
  • nad  · 技术社区  · 5 年前

    我有一个Sagemaker端点,可以从boto3客户端推断并得到响应。

    boto3 doc ,的 Body Byte 对象 StreamingBody 类型。我把它转换成字典

        response = client.invoke_endpoint(EndpointName=endpoint_name, Body=json.dumps(data))
    response_body = response['Body']
    dict_response = response_body.read().decode('utf-8')
    print(dict_response)
    

    我需要从“floatVal”键检索数组。我该怎么做?

    {
      "outputs": {
        "score": {
          "dtype": "DT_FLOAT",
          "floatVal": [
            0.00012408883776515722,
            ...........
            -0.8316119909286499,
            -0.24423488974571228
          ],
          "tensorShape": {
            "dim": [
              {
                "size": "1"
              },
              {
                "size": "1024"
              }
            ]
          }
        }
      },
      "modelSpec": {
        "version": "1",
        "name": "generic_model",
        "signatureName": "serving_default"
      }
    }
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   nad    5 年前

    实际上 dict_response 真的不是 dictionary 这里,相当于 string 类型。所以我不得不把 迪克图回应 floatVal 钥匙。

    更新的代码

    response = client.invoke_endpoint(EndpointName=endpoint_name, Body=json.dumps(data))
    response_body = response['Body']
    response_str = response_body.read().decode('utf-8')
    response_dict = eval(response_str)
    print(response_dict['outputs']['score']['floatVal'])