不要使用tf.reset_default_graph()来清除嵌套图

Dim*_*ims 9 python tensorflow

我有一堆函数,它们创建了计算图的一部分.在我做的一些这样的功能中

    with tf.name_scope("my_scope_name"):
        self._eye_n_components = tf.eye(se...
Run Code Online (Sandbox Code Playgroud)

在我打电话的最顶层功能的开头

tf.reset_default_graph()
Run Code Online (Sandbox Code Playgroud)

然后调用那些部分功能,他们也可以互相调用.

不幸的是,我收到了一个错误

错误:不要使用tf.reset_default_graph()来清除嵌套图.如果需要清除图形,请退出嵌套并创建新图形.

几个问题.

1)什么是嵌套以及如何"退出嵌套"?

2)如何创建新图表?

3)如何捕捉,我进入筑巢的地方?

4)如何清除整个图形,以便tensorflow不认为我试图清除嵌套的图形?

mrr*_*rry 23

tf.reset_default_graph()在以下某个方案中调用时,将显示此错误消息:

  • 在一个with graph.as_default():街区内.
  • 在一个with tf.Session():街区内.
  • 在创建tf.InteractiveSession和调用之间sess.close().

这些方案中的每一个都涉及注册默认(并且可能是"嵌套")tf.Graph对象,当您退出块(或关闭tf.InteractiveSession)时,该对象将被取消注册.在这些情况下重置默认图表会使系统处于不一致状态,因此您应该确保tf.InteractiveSession在调用之前退出块(或关闭)tf.reset_default_graph().