Возможно ли изменить существующий график вычислений TensorFlow?

График TensorFlow обычно строится постепенно с входов на выходы, а затем выполняется. Если посмотреть на код Python, списки входов операций являются неизменными, что предполагает, что входы не должны быть изменены. Означает ли это, что нет возможности обновлять / изменять существующий граф?

Класс 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 который реализует вышеуказанную идею как набор удобных функций.