Невозможно сохранить широкую и глубокую модель 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
Чтобы экспортировать оценщик, есть четыре шага:
Определите функции для экспорта в виде списка всех функций, используемых при инициализации оценщика.
Создайте конфигурацию функции, используя
create_feature_spec_for_parsing
,Построить
serving_input_fn
подходит для использования в обслуживанииinput_fn_utils.build_parsing_serving_input_fn
,Экспортируйте модель, используя
export_savedmodel()
,
Для правильного запуска клиентского скрипта необходимо выполнить три следующих шага:
Создайте и разместите свой скрипт где-нибудь в папке /serve /, например, /serve / tenorflow_serving/example/
Создайте или измените соответствующий файл BUILD, добавив
py_binary
,Создайте и запустите модельный сервер, например
tensorflow_model_server
,Создайте, соберите и запустите клиент, который отправляет tf.Example на наш
tensorflow_model_server
для вывода.
Для более подробной информации посмотрите на само руководство.
Надеюсь, поможет.
Есть ли в вашем графике переменные? Если нет, и все операции вместо этого работают с константами, вы можете указать флаг в конструкторе Saver:saver = tf.train.Saver(allow_empty=True)