Python 将多个MetagraphDef导入单个图形并还原变量
类似的问题,但是使用tf.train.import\u meta\u graph()接口 我的代码:Python 将多个MetagraphDef导入单个图形并还原变量,python,tensorflow,Python,Tensorflow,类似的问题,但是使用tf.train.import\u meta\u graph()接口 我的代码: with self.graph.as_default(), tf.device(device): with tf.Session(graph=self.graph, config=self.tf_config) as sess: # Add inherited graphs to CenterNet's graph. se
with self.graph.as_default(), tf.device(device):
with tf.Session(graph=self.graph, config=self.tf_config) as sess:
# Add inherited graphs to CenterNet's graph.
self.mm_saver = tf.train.import_meta_graph(self.maskmaker.model_ckpt + ".meta")
self.dv_saver = tf.train.import_meta_graph(self.deepvar.model_ckpt + ".meta")
# First saver can restore
self.mm_saver.restore(sess, self.maskmaker.model_ckpt)
# Second saver raises an exception
self.dv_saver.restore(sess, self.deepvar.model_ckpt)
异常(没有回溯,非常长)
看起来DVU保护程序正在尝试恢复图形上的所有变量,而不仅仅是它自己的变量。失败的关键“分类器/偏差”最初是mm图形的一部分
如何限制它恢复自己的密钥?已解决!该保存程序将操作添加到图形中,由于两个保存程序位于同一个名称\u范围内,因此它们相互干扰。您需要将每个调用包装起来,以便在其自己的名称\u范围内导入\u元\u图:
with self.graph.as_default(), tf.device(device):
with tf.Session(graph=self.graph, config=self.tf_config) as sess:
# Add inherited graphs to CenterNet's graph.
with tf.name_scope(self.maskmaker.name):
self.mm_saver = tf.train.import_meta_graph(self.maskmaker.model_ckpt + ".meta")
with tf.name_scope(self.deepvar.name):
self.dv_saver = tf.train.import_meta_graph(self.deepvar.model_ckpt + ".meta")
# First saver can restore
self.mm_saver.restore(sess, self.maskmaker.model_ckpt)
# Second saver can also restore
self.dv_saver.restore(sess, self.deepvar.model_ckpt)
解决了!该保存程序将操作添加到图形中,由于两个保存程序位于同一个名称\u范围内,因此它们相互干扰。您需要将每个调用包装起来,以便在其自己的名称\u范围内导入\u元\u图:
with self.graph.as_default(), tf.device(device):
with tf.Session(graph=self.graph, config=self.tf_config) as sess:
# Add inherited graphs to CenterNet's graph.
with tf.name_scope(self.maskmaker.name):
self.mm_saver = tf.train.import_meta_graph(self.maskmaker.model_ckpt + ".meta")
with tf.name_scope(self.deepvar.name):
self.dv_saver = tf.train.import_meta_graph(self.deepvar.model_ckpt + ".meta")
# First saver can restore
self.mm_saver.restore(sess, self.maskmaker.model_ckpt)
# Second saver can also restore
self.dv_saver.restore(sess, self.deepvar.model_ckpt)
作用域名称也可以作为参数直接传递到import_meta_graph()。作用域名称也可以作为参数直接传递到import_meta_graph()。