从图中删除节点或重置整个默认图
Remove nodes from graph or reset entire default graph
使用默认全局图时,是否可以在添加节点后删除节点,或者将默认图重置为空?在 IPython 中以交互方式使用 TF 时,我发现自己不得不反复重启内核。如果可能的话,我希望能够更轻松地试验图表。
2016 年 11 月 2 日更新
tf.reset_default_graph()
老东西
有reset_default_graph
,但没有public的一部分API(我觉得应该有,有人想file an issue上GitHub吗?)
我的重置方法是这样的:
from tensorflow.python.framework import ops
ops.reset_default_graph()
sess = tf.InteractiveSession()
默认情况下,会话是围绕默认图构建的。
为了避免在会话中留下死节点,您需要控制默认图或使用显式图。
要清除默认图形,可以使用tf.reset_default_graph函数。
tf.reset_default_graph()
sess = tf.InteractiveSession()
您也可以显式构造一个图并避免使用默认图。如果使用普通 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], ...)
编辑:对于 tensorflow
(1.0+) 的最新版本,正确的函数是 g.as_default
.
IPython / Jupyter 笔记本单元在单元运行之间保持状态。
创建自定义图表:
def main():
# Define your model
data = tf.placeholder(...)
model = ...
with tf.Graph().as_default():
main()
一次 运行,图表被清理。
不确定我是否遇到了同样的问题,但是
tf.keras.backend.clear_session()
在构建和训练模型(在我的例子中是 Keras)的单元格的开头有助于 "cut the clutter" 因此在重复运行同一单元格后,只有当前图形保留在 TensorBoard 可视化中.
环境:使用 built-in TensorBoard(使用 %load_ext tensorboard
技巧)的 Colab 中的 TensorFlow 2.0 (tensorflow-gpu==2.0.0b1
)。
Tensorflow 2.0 Compatible Answer:在Tensorflow Version >= 2.0
中,重置整个默认图的命令,当运行在图形模式下是tf.compat.v1.reset_default_graph
.
注意:默认图表是当前线程的属性。此函数仅适用于当前线程。在 tf.compat.v1.Session
或 tf.compat.v1.InteractiveSession
处于活动状态时调用此函数将导致未定义的行为。在调用此函数后使用任何先前创建的 tf.Operation
或 tf.Tensor
对象将导致未定义的行为。
Raises:AssertionError:如果在嵌套图中调用此函数。
使用默认全局图时,是否可以在添加节点后删除节点,或者将默认图重置为空?在 IPython 中以交互方式使用 TF 时,我发现自己不得不反复重启内核。如果可能的话,我希望能够更轻松地试验图表。
2016 年 11 月 2 日更新
tf.reset_default_graph()
老东西
有reset_default_graph
,但没有public的一部分API(我觉得应该有,有人想file an issue上GitHub吗?)
我的重置方法是这样的:
from tensorflow.python.framework import ops
ops.reset_default_graph()
sess = tf.InteractiveSession()
默认情况下,会话是围绕默认图构建的。 为了避免在会话中留下死节点,您需要控制默认图或使用显式图。
要清除默认图形,可以使用tf.reset_default_graph函数。
tf.reset_default_graph() sess = tf.InteractiveSession()
您也可以显式构造一个图并避免使用默认图。如果使用普通
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], ...)
编辑:对于 tensorflow
(1.0+) 的最新版本,正确的函数是 g.as_default
.
IPython / Jupyter 笔记本单元在单元运行之间保持状态。
创建自定义图表:
def main():
# Define your model
data = tf.placeholder(...)
model = ...
with tf.Graph().as_default():
main()
一次 运行,图表被清理。
不确定我是否遇到了同样的问题,但是
tf.keras.backend.clear_session()
在构建和训练模型(在我的例子中是 Keras)的单元格的开头有助于 "cut the clutter" 因此在重复运行同一单元格后,只有当前图形保留在 TensorBoard 可视化中.
环境:使用 built-in TensorBoard(使用 %load_ext tensorboard
技巧)的 Colab 中的 TensorFlow 2.0 (tensorflow-gpu==2.0.0b1
)。
Tensorflow 2.0 Compatible Answer:在Tensorflow Version >= 2.0
中,重置整个默认图的命令,当运行在图形模式下是tf.compat.v1.reset_default_graph
.
注意:默认图表是当前线程的属性。此函数仅适用于当前线程。在 tf.compat.v1.Session
或 tf.compat.v1.InteractiveSession
处于活动状态时调用此函数将导致未定义的行为。在调用此函数后使用任何先前创建的 tf.Operation
或 tf.Tensor
对象将导致未定义的行为。
Raises:AssertionError:如果在嵌套图中调用此函数。