Обслуживающая модель оценщика линейного классификатора TensorFlow - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь запустить обученную модель этого учебника с нашим собственным набором данных CSV с каждой строкой, состоящей из 4 значений int (последним является метка) на расстоянии, используя обслуживание TensorFlow:

Я использую TensorFlow Serving с использованием Docker на расстоянии, и моя среда разработки - Windows, использующая Python 3.6.

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

feature_spec = {'firstInt': tf.FixedLenFeature([1], tf.int64),
                'secondInt': tf.FixedLenFeature([1], tf.int64),
                'thirdInt': tf.FixedLenFeature([1], tf.int64)}

def serving_input_receiver_fn():
    serialized_tf_example = tf.placeholder(dtype=tf.string,
                                           shape=[None],
                                           name='input_example_tensor')
    receiver_tensors = {'examples': serialized_tf_example}
    features = tf.parse_example(serialized_tf_example, feature_spec)
    return tf.estimator.export.ServingInputReceiver(features, receiver_tensors)

classifier.export_savedmodel(
    '.\\SaveLC\\save_dir',
    serving_input_receiver_fn=serving_input_receiver_fn)

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

"predictions": [
        2.5,
        3,
        4.5
    ]

когда он отправляет POST-запрос, подобный этому

{"instances": [1.0, 2.0, 5.0]}

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

"error": "Servable not found for request: Latest(save_dir_new)"

Что это за исправный объект и как его можно экспортировать, если мой текущий метод в настоящее время не работает?

Спасибо

1 Ответ

0 голосов
/ 15 июля 2019

Похоже, что путь, по которому вы сохранили Модель, .\\SaveLC\\save_dir и путь, по которому вы используете Запустите контейнер обслуживания TensorFlow и откройте порт REST API , могут не совпадать.

Код Запуск контейнера обслуживания TensorFlow и открытие порта API REST :

docker run -t --rm -p 8501:8501 \
    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
    -e MODEL_NAME=half_plus_two \
    tensorflow/serving &

Путь до двоеточия, в данном примере $TESTDATA/saved_model_half_plus_two_cpu и путь, которыйВы сохраняете нашу модель, она должна быть такой же, и это должен быть полный путь, если мы выполняем команду из терминала или из командной строки.

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

...