Remove nodes from graph or reset entire default graph
Update 11/2/2016
tf.reset_default_graph()
Old stuff
There's reset_default_graph
, but not part of public API (I think it should be, does someone wants to file an issue on GitHub?)
My work-around to reset things is this:
from tensorflow.python.framework import ops
ops.reset_default_graph()
sess = tf.InteractiveSession()
IPython / Jupyter notebook cells keep state between runs of a cell.
Create a custom graph:
def main():
# Define your model
data = tf.placeholder(...)
model = ...
with tf.Graph().as_default():
main()
Once ran, the graph is cleaned up.
By default, a session is constructed around the default graph. To avoid leaving dead nodes in the session, you need to either control the default graph or use an explicit graph.
To clear the default graph, you can use the tf.reset_default_graph function.
tf.reset_default_graph() sess = tf.InteractiveSession()
You can also construct explicitly a graph and avoid using the default one. If you use a normal
Session
, you will need to fully create the graph before constructing the session. ForInteractiveSession
, you can just declare the graph and use it as a context to declare further changes: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], ...)
EDIT: For recent versions of tensorflow
(1.0+), the correct function is g.as_default
.