跨会话使用还原的变量会导致错误"uninitialized value"



我将变量还原为一个会话中的图形,关闭会话,然后创建一个新的会话,我尝试评估图形。这样做时,我会收到错误FailedPreconditionError: Attempting to use uninitialized value ...

试图在第一个会话中评估图表的工作正常。

在第二个会话上调用sess.run(tf.global_variables_initializer())"解决"问题,但是重置变量的值。

初始修复是使用:

完成的
meta_graph_def = meta_graph.read_meta_graph_file(meta_graph_filename)
saver = tf.train.import_meta_graph(meta_graph_def)
sess = tf.Session(target=target, config=config)
saver.restore(sess, save_path)

根据https://www.tensorflow.org/programmers_guide/faq:

变量的寿命是什么?

首次运行会话中该变量的tf.variable.Initializer操作时,会创建一个变量。当tf.session.close。

时,它被摧毁

因此,似乎不能在Session.close上使用该变量。

您必须还原每个会话中的变量。

最新更新