Как развернуть конечную точку прогнозирования рака молочной железы, созданную AWS Sagemaker, с использованием Lambda и API-шлюза?
Я пытаюсь развернуть существующую модель прогнозирования рака молочной железы на Amazon Sagemanker, используя AWS Lambda и API-шлюз. Я следовал за официальной документацией от нижеуказанного URL.
Я получаю ошибку типа в "предиката".
result = json.loads(response['Body'].read().decode())
print(result)
pred = int(result['predictions'][0]['predicted_label'])
predicted_label = 'M' if pred == 1 else 'B'
return predicted_label
пожалуйста, дайте мне знать, если кто-то может решить эту проблему. Спасибо.
1 ответ
Решение
Печатая тип результата print(type(result))
Вы можете увидеть его словарь. теперь вы можете видеть, что имя ключа - "оценка" вместо "предикатная метка", которую вы даете преду. Следовательно, замените его
pred = int(result['predictions'][0]['score'])
Я думаю, что это решает вашу проблему.
вот моя лямбда-функция:
import os
import io
import boto3
import json
import csv
# grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker')
def lambda_handler(event, context):
print("Received event: " + json.dumps(event, indent=2))
data = json.loads(json.dumps(event))
payload = data['data']
print(payload)
response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
ContentType='text/csv',
Body=payload)
#print(response)
print(type(response))
for key,value in response.items():
print(key,value)
result = json.loads(response['Body'].read().decode())
print(type(result))
print(result['predictions'])
pred = int(result['predictions'][0]['score'])
print(pred)
predicted_label = 'M' if pred == 1 else 'B'
return predicted_label