Связь между хранителем тензорного потока, экспортером и моделью сохранения

Вопрос:

  1. Tensorflow Saver, Exporter, SavedModelBuilder можно использовать для сохранения моделей. Согласно https://tensorflow.github.io/serving/serving_basic.html и тензорное обслуживание потока, я понимаю, что Saver используется для сохранения контрольных точек обучения, а Exporter и SavedModelBuilder используются для обслуживания.

    Однако я не знаю, чем отличаются их результаты. Переменные. Данные - ??? - из - ??? и файлы variable.index, созданные SavedModelBuilder, такие же, как cpkt-xxx.index и cpkt-xxx.data - ??? - of - ??? сгенерировано Saver?

  2. Я до сих пор не понимаю, что такое файлы моделей tensorflow. Я прочитал http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/ и Tensorflow: как сохранить / восстановить модель?, что меня больше смущает.

    В каталоге модели находится 4 файла:

    1. graph.pbtxt
    2. model.ckpt-number.data-00000-of-00001
    3. model.ckpt-number.meta
    4. model.ckpt-number.index

    В файлах 2 и 4 хранятся веса переменных. Файл 3 хранит график. Тогда что же хранит 1?

  3. Как преобразовать выходные данные Saver в SavedModelBuilder. У меня есть каталог контрольных точек, и я хочу экспортировать модель для обслуживания. Согласно https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python/saved_model.

это должно быть так

export_dir = ...
...
builder = tf.saved_model.builder.SavedModelBuilder(export_dir)
with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph_and_variables(sess,
                                       [tf.saved_model.tag_constants.TRAINING],
                                       signature_def_map=foo_signatures,
                                       assets_collection=foo_assets)
...
with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph(["bar-tag", "baz-tag"])
...
builder.save()

Итак, сначала мне нужно загрузить контрольные точки с помощью:

saver = tf.train.import_meta_graph('model-number.meta')
saver.restore(sess, tf.train.latest_checkpoint('./'))

А затем используйте этот sess для строителя.

Я прав?


person lionel    schedule 20.07.2017    source источник


Ответы (1)


SavedModel - это формат, используемый для обслуживания, созданный с помощью SavedModelBuilder. Лучше всего, чтобы ваш обучающий код вызывал SavedModelBuilder и передавал полученные выходные файлы в TF-Serving. Если вы это сделаете, вам не нужно разбираться в деталях того, какие файлы создаются :)

В документе [1] говорится о структуре файлов внутри каталога SavedModel.

[1] https://www.tensorflow.org/programmers_guide/saved_model

person Christopher Olston    schedule 26.03.2018