Повторно использовать сохраненный тензорный граф с несколькими сессиями - PullRequest
0 голосов
/ 01 мая 2018

Что я пытаюсь сделать это так:

graph = tf.get_default_graph()
with graph.as_default():
    with tf.Session() as load_sess:
        resSaver = tf.train.import_meta_graph(lastModel)
        resSaver.restore(load_sess, checkpoint_file)
        x = graph.get_operation_by_name("output/x").outputs[0]
        [...]

with tf.Session() as run_sess:
    sess_run.run(x, feed_dict={...})

Я получаю ошибку:

Attempting to use uninitialized value encoder/enc_b_4

и использование:

print(sess_run.run(tf.report_uninitialized_variables()))

Я вижу, что все переменные не инициализированы. Если я запускаю tf.global_variables_initializer (), ошибка исчезает, но похоже, что все обучение уничтожено.

Я пытался создать новый сеанс внутри блока, как это:

with graph.as_default():
   with tf.Session(graph=graph) as sess_run:
       [...]

и несколько других вариантов без удачи.

Как правильно повторно использовать график с несколькими / разными сессиями?

Важными моментами являются:

  1. Я хочу загрузить / инициализировать график только один раз, потому что это занимает много времени (13 секунд)
  2. Я хочу запустить несколько сеансов одновременно с очень небольшим пулом потоков (возможно, это плохая идея, но это то, что я хочу обнаружить). Но даже с одним потоком я получаю эту ошибку.

Прямо сейчас я использую один и тот же сеанс для загрузки и оценки переменных, и это работает. Я храню эту сессию в глобальной переменной и использую ее для всех запросов (по одному за раз). Я подозреваю, что есть лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...