我有一堆函数,它们创建了计算图的一部分。在一些这样的功能中,我做
with tf.name_scope("my_scope_name"):
self._eye_n_components = tf.eye(se...
在我调用的最顶层函数的开头
tf.reset_default_graph()
然后调用那些部分函数,它们也可以相互调用。
不幸的是,我得到一个错误
Error: Do not use tf.reset_default_graph() to clear nested graphs. If you need a cleared graph, exit the nesting and create a new graph.
几个问题。
1)什么是嵌套,如何“退出嵌套”?
2) 如何创建新图?
3)如何捕捉,我进入嵌套的位置?
4) 如何清除整个图,以便 tensorflow 认为我正在尝试清除嵌套的图?
最佳答案
在以下情况之一中调用 tf.reset_default_graph()
时会显示此错误消息:
- 在
with graph.as_default():
block 中。 - 在
with tf.Session():
block 中。 - 在创建
tf.InteractiveSession
和调用sess.close()
之间。
这些场景中的每一个都涉及注册一个默认的(并且可能是“嵌套的”)tf.Graph
对象,当您退出该 block (或关闭 tf.InteractiveSession
)。在这些情况下重置默认图会使系统处于不一致状态,因此您应确保在调用 tf.reset_default_graph()< 之前退出 block (或关闭
.tf.InteractiveSession
)/
关于python - 不要使用 tf.reset_default_graph() 清除嵌套图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46893824/