TensorFlow图通常从输入到输出逐步构建,然后执行.查看Python代码,操作的输入列表是不可变的,这表明不应修改输入.这是否意味着无法更新/修改现有图表?
TensorFlow tf.Graph
类是仅附加数据结构,这意味着您可以在执行图形的一部分后将节点添加到图形中,但不能删除或修改现有节点.由于TensorFlow在您调用时仅执行必要的子图Session.run()
,因此在图中具有冗余节点没有执行时间成本(尽管它们将继续消耗内存).
要删除图表中的所有节点,您可以使用新图表创建会话:
with tf.Graph().as_default(): # Create a new graph, and make it the default. with tf.Session() as sess: # `sess` will use the new, currently empty, graph. # Build graph and execute nodes in here.
是的,tf.Graph
正如@mrry所说的那样构建了一种仅限附加的方式.
但有解决方法:
从概念上讲,您可以通过克隆现有图表来修改现有图表并执行所需的修改.从r1.1开始,Tensorflow提供了一个名为的模块,它将tf.contrib.graph_editor
上述想法实现为一组方便的功能.