Предсказания обслуживания Tensorflow, сопоставленные с метками - PullRequest
0 голосов
/ 29 ноября 2018

Я обслуживаю начальную модель с использованием сервировки TensorFlow.Я делаю это в Azure Kubernetes, поэтому не через более стандартное и хорошо документированное облако Google.

В любом случае, все это работает, однако меня смущает то, что прогнозы возвращаются в виде массива чисел с плавающей точкой.,Эти значения сопоставляются с исходными метками, переданными во время обучения, но без исходного файла меток нет способа перепроектировать то, к чему относится каждая вероятность.

Прежде чем перейти к обслуживанию, я просто использовал сценарий вывода, который затемперекрестные ссылки на файл меток, который я хранил вместе с замороженной моделью во время обучения.Но с обслуживанием это не работает.

Итак, мой вопрос: как я могу получить метки, связанные с моделью, и в идеале получить прогноз для возвращения меток и вероятностей?

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Я попробовал подход, предложенный @ user1371314, но не смог заставить его работать.Другое решение, которое сработало, - это создание тензора (вместо константы) и отображение его только с первым элементом выходного слоя при сохранении модели.Когда вы сложите это вместе, это будет выглядеть так:

# get labels names and create a tensor from it
.... 
label_names_tensor = tf.convert_to_tensor(label_names)

# save the model and map the labels to the output layer
tf.saved_model.simple_save(
        sess,
        "./saved_models",
        inputs={'image': model.input},
        outputs={'label' : label_names_tensor,'prediction': model.output[0]})

Когда вы сделаете прогноз после обслуживания вашей модели, вы получите следующий результат:

{
    "predictions": [
        {
            "label": "label-name",
            "prediction": 0.114107
        },
        {
            "label": "label-name",
            "prediction": 0.288598
        },
        {
            "label": "label-name",
            "prediction": 0.17436
        },
        {
            "label": "label-name",
            "prediction": 0.186366
        },
        {
            "label": "label-name",
            "prediction": 0.236568
        }
    ]
0 голосов
/ 03 декабря 2018

Я уверен, что есть способ вернуть отображение непосредственно для этого, используя различные операции TF, однако мне удалось, по крайней мере, упаковать метки в модель и вернуть их в прогнозе вместе с вероятностями.

Что я сделал, так это создал tf.constant из массива меток, а затем добавил этот тензор в массив выходных тензоров в tf.saved_model.signature_def_utils.build_signature_def

Теперь, когда я получаю прогноз, я получаю число с плавающей запятоймассив, а также массив меток, и я могу сопоставить их на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...