Я обучил классификатор изображений с помощью tf.keras и экспортировал модель после завершения обучения, чтобы обслуживать ее в облаке и делать онлайн-прогнозы.
Я обслуживал свою модель на локальном хосте, используя:
tensorflow_model_server --model_base $PATH_TO_SAVEDMODEL --rest_api_port=9000 --model_name=saved_model
Мне удалось делать прогнозы и получать результаты. Когда я попытался развернуть модель в облаке, я получил ошибку в названии.
Дело в том, что я хочу сопоставить имена классов с результатами прогнозирования, и я смог добиться этого, выполнив следующие действия:
# after i got the label names i convert the variable to a tensor
label_names_tensor = tf.convert_to_tensor(label_names) # shape (5,)
для экспорта модели я использую это:
tf.saved_model.simple_save(
sess,
"./saved_models/v1",
inputs={'image': model.input},
outputs={'label' : label_names_tensor,'prediction': model.output[0]})
ПРИМЕЧАНИЕ:
- model.output имеет форму (?, 5)
- model.output [0] имеет форму (5,)
это работает локально, и я получаю имена классов, сопоставленные с результатами прогнозирования.
Очевидно, в чем проблема ... как я могу заставить это работать и правильно сопоставить имена классов с результатом предсказания?
Я пытался использовать функцию изменения формы, но не смог заставить ее работать. Я думаю, что мне нужно иметь это в конце:
- форма label_names_tensor -> (?, 5)
так что я могу сделать это:
- - output = {'label': label_names_tensor, 'Forecast': model.output}
любая помощь очень ценится