Что я пытаюсь сделать это так:
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:
[...]
и несколько других вариантов без удачи.
Как правильно повторно использовать график с несколькими / разными сессиями?
Важными моментами являются:
- Я хочу загрузить / инициализировать график только один раз, потому что это занимает много времени (13 секунд)
- Я хочу запустить несколько сеансов одновременно с очень небольшим пулом потоков (возможно, это плохая идея, но это то, что я хочу обнаружить). Но даже с одним потоком я получаю эту ошибку.
Прямо сейчас я использую один и тот же сеанс для загрузки и оценки переменных, и это работает. Я храню эту сессию в глобальной переменной и использую ее для всех запросов (по одному за раз). Я подозреваю, что есть лучшее решение.