В тензорном потоке на sagemaker получена ошибка, так как на входе должен быть вектор, получивший форму: [1,2] - PullRequest
2 голосов
/ 01 февраля 2020

Я построил модель тензорного потока на Sagemaker. В модели используется универсальный кодировщик предложений

import json
class MixEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

serialize_data = json.dumps({'input1': np.array(("Hello","World")) } , cls = MixEncoder  )
print(serialize_data)

response = client.invoke_endpoint(EndpointName=endpoint_name,ContentType='application/json' ,Body=serialize_data)-- 

В этой строке выдается ошибка

ModelError: Произошла ошибка (ModelError) при вызове операции InvokeEndpoint: Получена ошибка клиента (400) из модель с сообщением "{" error ":" input должен быть вектором, получившим форму: [1,2] \ n \ t

Модель ожидает только один тензор в качестве входных данных. Он определяется как input_model_placeholder = tf.placeholder (tf.string, shape = [None], name = "tenor_input_model_1").

Пожалуйста, помогите

1 Ответ

1 голос
/ 07 февраля 2020

Я не знаком с Sagemaker, но это похоже на распространенную ошибку при попытке передать предложение как вектор слов, а универсальный кодировщик предложений должен принимать полные предложения. Кроме того, кажется, что Sagemaker пакетирует результаты, потому что пример кода передает массив формы (2,), но ошибка была около (1, 2).

Попробуйте это:

json.dumps({'input1': np.array("Hello World")}, cls=MixEncoder)
...