重复使用多个会话保存的张量流图

时间:2018-04-30 21:13:01

标签: tensorflow

我正在努力做到这一点:

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. 我想同时运行多个会话,使用非常小的线程池(也许这是一个坏主意,但这是我想要发现的)。但即使使用单个线程,我也会收到此错误。
  3. 现在我使用相同的会话加载和评估变量,它的工作原理。我将此会话存储在一个全局变量中,并将其用于所有请求(一次一个)。我怀疑有更好的解决方案。

0 个答案:

没有答案