Невозможно сохранить широкую и глубокую модель tf.contrib.learn в сеансе тензорного потока и передать ее на обслуживание TensorFlow.

Я использую широкую и глубокую модель tf.contrib.learn в службе TensorFlow и экспортирую обученную модель, использующую фрагмент кода.

 with tf.Session() as sess:
      init_op = tf.initialize_all_variables()
      saver = tf.train.Saver()
      m.fit(input_fn=lambda: input_fn(df_train), steps=FLAGS.train_steps)
      print('model successfully fit!!')
      results = m.evaluate(input_fn=lambda: input_fn(df_test), steps=1)
      for key in sorted(results):
        print("%s: %s" % (key, results[key]))
      model_exporter = exporter.Exporter(saver)
      model_exporter.init(
      sess.graph.as_graph_def(),
      init_op=init_op,
      named_graph_signatures={
          'inputs': exporter.generic_signature({'input':df_train}),
          'outputs': exporter.generic_signature({'output':df_train[impressionflag]})})
      model_exporter.export(export_path, tf.constant(FLAGS.export_version), sess)
      print ('Done exporting!')

Но при использовании команды saver = tf.train.Saver() Ошибка ValueError: No variable to save is displayed введите описание изображения здесь

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

3 ответа

Решение

Графики и сеансы содержатся в Оценщике и не раскрываются и не просочились. Таким образом, используя Estimator.export(), мы можем экспортировать модель и создать обслуживаемый объект, который можно использовать для запуска на model_servers.

Estimator.export() теперь устарела, поэтому вам нужно использовать Estimator.export_savedmodel(),

Здесь я написал простое учебное пособие " Экспорт и обслуживание модели TensorFlow Wide & Deep".

TL; DR

Чтобы экспортировать оценщик, есть четыре шага:

  1. Определите функции для экспорта в виде списка всех функций, используемых при инициализации оценщика.

  2. Создайте конфигурацию функции, используя create_feature_spec_for_parsing,

  3. Построить serving_input_fn подходит для использования в обслуживании input_fn_utils.build_parsing_serving_input_fn,

  4. Экспортируйте модель, используя export_savedmodel(),

Для правильного запуска клиентского скрипта необходимо выполнить три следующих шага:

  1. Создайте и разместите свой скрипт где-нибудь в папке /serve /, например, /serve / tenorflow_serving/example/

  2. Создайте или измените соответствующий файл BUILD, добавив py_binary,

  3. Создайте и запустите модельный сервер, например tensorflow_model_server,

  4. Создайте, соберите и запустите клиент, который отправляет tf.Example на наш tensorflow_model_server для вывода.

Для более подробной информации посмотрите на само руководство.

Надеюсь, поможет.

Есть ли в вашем графике переменные? Если нет, и все операции вместо этого работают с константами, вы можете указать флаг в конструкторе Saver:
saver = tf.train.Saver(allow_empty=True)

Другие вопросы по тегам