从图表中删除节点或重置整个默认图表

Moh*_*shi 61 python tensorflow

使用默认全局图时,是否可以在添加节点后删除节点,或者将默认图重置为空?在IPython中以交互方式使用TF时,我发现自己不得不重复重启内核.如果可能的话,我希望能够更轻松地试验图表.

Yar*_*tov 94

2016年11月2日更新

tf.reset_default_graph()

老东西

reset_default_graph,但不是公共API的一部分(我认为应该是,有人想在GitHub上提出问题吗?)

我解决问题的方法是:

from tensorflow.python.framework import ops
ops.reset_default_graph()
sess = tf.InteractiveSession()
Run Code Online (Sandbox Code Playgroud)


Tho*_*eau 34

默认情况下,会话围绕默认图构建.为避免在会话中留下死节点,您需要控制默认图形或使用显式图形.

  • 要清除默认图形,可以使用tf.reset_default_graph函数.

    tf.reset_default_graph()
    sess = tf.InteractiveSession()
    
    Run Code Online (Sandbox Code Playgroud)
  • 您还可以显式构造图形并避免使用默认图形.如果使用法线Session,则需要在构建会话之前完全创建图形.因为InteractiveSession,您可以声明图形并将其用作上下文来声明进一步的更改:

    g = tf.Graph()
    sess = tf.InteractiveSession(graph=g)
    with g.asdefault():
        # Put variable declaration and other tf operation
        # in the graph context
        ....
        b = tf.matmul(A, x)
        ....
    
     sess.run([b], ...)
    
    Run Code Online (Sandbox Code Playgroud)

编辑:对于tensorflow(1.0+)的最新版本,正确的功能是g.as_default.

  • 在tensorflow> = 1.0中,它是`g.as_default()` (2认同)
  • 为什么需要`sess = tf.InteractiveSession()`? (2认同)

Ser*_*rge 5

IPython / Jupyter 笔记本单元在单元运行之间保留状态。

创建自定义图表:

def main():
    # Define your model
    data = tf.placeholder(...)
    model = ...

with tf.Graph().as_default():
    main()
Run Code Online (Sandbox Code Playgroud)

一旦运行,图表就会被清理。

  • “一旦运行,图表就会被清理”我不认为这是真的。 (2认同)

小智 5

Tensorflow 2.0 兼容答案:在 中Tensorflow Version >= 2.0,在图形模式下运行时重置整个默认图形的命令是tf.compat.v1.reset_default_graph

注意:默认图是当前线程的属性。该函数仅适用于当前线程。tf.compat.v1.Session当 a或处于活动状态时调用此函数tf.compat.v1.InteractiveSession将导致未定义的行为。使用任何先前创建的tf.Operationtf.Tensor对象将导致未定义的行为。

引发 AssertionError:如果在嵌套图中调用此函数。