1

我的目标是将经过训练的图 A 与图 B 合并。我似乎无法初始化来自图 A 的变量。

导出 graph_def 和 meta_graph

  tf.train.write_graph(sess.graph, './tmp', 'model.pb', as_text=False)
  tf.train.export_meta_graph(filename='./tmp/mod.meta', graph=graph, clear_devices=True)

导入到图 b 的图。

  tf.import_graph_def(graph_def) 
  tf.train.import_meta_graph(tf.train.latest_checkpoint('./tmp') + '.meta')

在会话中初始化变量

saver.restore(sess, tf.train.latest_checkpoint('./tmp'))
  init_op = sess.graph.get_operation_by_name("init")

  sess.run(tf.global_variables_initializer())
  sess.run(init_op)

以下命令报告没有未初始化的变量。如果我在上面的初始化程序命令之前运行该命令,它会显示图 A 和 B 中的变量未初始化。

print(sess.run(tf.report_uninitialized_variables()))

输出错误

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value import/b3

任何可能出错的想法都非常感谢。

4

1 回答 1

0

一种替代方法是您可以保存检查点 + 元图并加载它,而不是加载 graphDef + 元图。

# saving a checkpoint + metagraph
with tf.Session() as sess:
   tf.Saver().save(sess, save_path='./tmp/model.chkpt', global_step=global_step)
   tf.train.export_meta_graph('./graph/final.meta', clear_devices=True)

# loading checkpoint + metagraph
new_saver = tf.train.import_meta_graph('./graph/final.meta')
with tf.Session() as sess:
   new_saver.restore(sess, tf.train.latest_checkpoint('./tmp'))
于 2018-11-02T21:36:16.213 回答