Обслуживание Tensorflow возвращает 400 ошибок неправильного запроса

#python #tensorflow #python-requests #tensorflow2.0 #tensorflow-serving

#python #тензорный поток #python-запросы #тензорный поток 2,0 #обслуживание tensorflow

Вопрос:

У меня есть 2 модели, с которыми я экспериментирую, входы и выходы одинаковы для них обоих. Один из них — CNN, а другой имеет только плотные слои. Я сохранил обе модели одинаково, и я пытаюсь получить от них прогнозы, используя TF, обслуживающий Rest API.

Модель CNN:

 inputs = tf.keras.layers.Input(shape=(50,3))
x = tf.keras.layers.Conv1D(filters=12, kernel_size=2, strides=1, padding='valid', activation='relu')(inputs)
x = tf.keras.layers.MaxPooling1D()(x)
x = tf.keras.layers.Conv1D(filters=12, kernel_size=2, strides=1, padding='valid', activation='relu')(x)
x = tf.keras.layers.MaxPooling1D()(x)
x = tf.keras.layers.Conv1D(filters=12, kernel_size=2, strides=1, padding='valid', activation='relu')(x)
x = tf.keras.layers.Flatten()(x)
predictions = tf.keras.layers.Dense(3, activation='softmax')(x)
 

Плотная модель:

 inputs = tf.keras.layers.Input(shape=(50,3))
x = tf.keras.layers.Dense(64, activation='relu')(inputs)
x = tf.keras.layers.Dense(64, activation='relu')(x)
x = tf.keras.layers.Dense(64, activation='relu')(x)
x = tf.keras.layers.Dense(32, activation='relu')(x)
x = tf.keras.layers.Flatten()(x)
predictions = tf.keras.layers.Dense(3, activation='softmax')(x)
 

При попытке отправить запрос на прогнозирование в модель CNN с обслуживанием TF я получаю правильный ответ, но тот же запрос, отправляемый в плотную модель, возвращает 400 Bad Request ошибку.

 reading = np.random.uniform(0, 1, (50, 3))
r = requests.post('http://localhost:8501/v1/models/my_model:predict', data=json.dumps({'instances': reading.tolist()}))
 

Модель CNN возвращается правильно:

 {"predictions": [[1.78464702e-20, 4.44278494e-33, 4.32330665e-07]]}
 

Плотная модель возвращает:

 {"error": "indices[0] = 2 is not in [0, 2)\n\t [[{{node model/dense/Tensordot/GatherV2_1}}]]"}
 

Есть идеи, что здесь происходит?

Комментарии:

1. Вы должны просмотреть журнал обслуживания tensorflow и найти подробный журнал ошибок .

Ответ №1:

При ближайшем рассмотрении плотная модель ожидала ввода как (-1,50,3) .

Простое np.reshape(-1,50,3) решение проблемы для меня.