Tensorflow экспортирует и повторно использует объект Estimator в Python

Речь идет о Tensorflow и его более высоком API Estimator, а также об экспорте и повторном использовании моделей.

Существует несколько средств для экспорта моделей тензорного потока: tf.train.Saver, запись и импорт графиков напрямую с соответствующими им весами.

Мои интересы лежат в объекте tf.estimator.Estimator и в том, как мы можем их использовать. Мой пример использования довольно прост: я подхожу к простой модели скажем в tenorflow и хотел бы использовать ее предсказания в более сложной.

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

Мой вопрос заключается в следующем:

  1. Есть ли (простой) способ использовать и импортировать вывод export_savemodel в питоне? Я догадался, что вы могли бы технически использовать код C++ и создать обертку вокруг них?

  2. Есть ли эффективный способ составить tf.estimator.Estimator и повторно использовать его в Python? Компилятор XLA кажется интересным, но я не смог выяснить, смогу ли я использовать результат обратно в Python.

  3. В целом, какова лучшая практика повторного использования ранее обученных моделей в Tensorflow?

Большое спасибо за ваше чтение!

РЕДАКТИРОВАТЬ (мой собственный ответ): принятый ответ предлагает использовать saved_model API. Тем не менее, я думаю, что стоит понять концепцию графа и замороженного графа. Эта основная ссылка иллюстрирует основные шаги, которые, вероятно, повторяются в saved_model апи. По сути, вы должны:

  1. перестроить график с переопределенными входными операциями;
  2. заморозить эту версию;
  3. предоставить новый вклад в input_map аргумент при звонке tf.import_graph_def перезагрузить модель спины.

1 ответ

Решение
  1. Да, см. Этот документ https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/saved_model/README.md. В частности, раздел APIs.Loader.Python.
  2. Что вы подразумеваете под "составить оценку"? Все данные, используемые оценщиком, сохраняются в SavedModel. Сброс - это просто логика высокого уровня. Фактические операции, такие как умножение матриц, обеспечиваются библиотекой C++ и выполняются на любом оборудовании, которое у вас есть - CPU, GPU или TPU. XLA - это довольно низкоуровневый компилятор, далёкий от Estimator API. Для получения дополнительной информации об этом ищите разговор об этом "XLA: TensorFlow, Compiled! (TensorFlow Dev Summit 2017)"
  3. Ссылка выше предоставляет очень высокоуровневый API. Для нижнего уровня см. https://www.tensorflow.org/programmers_guide/meta_graph. На еще более низком уровне находится GraphDef (см. Ссылки на странице meta_graph).
Другие вопросы по тегам