Подтвердить что ты не робот

Удалить узлы из графика или reset весь график по умолчанию

При работе с глобальным графиком по умолчанию можно удалить узлы после их добавления или, альтернативно, к reset по умолчанию для пустого столбца? При интерактивной работе с TF в IPython мне приходится повторно перезапускать ядро. Я хотел бы, если возможно, экспериментировать с графиками.

4b9b3361

Ответ 1

Обновление 11/2/2016

tf.reset_default_graph()

Старый материал

Там reset_default_graph, но не является частью общедоступного API (я думаю, это должно быть, кто-то хочет записать вопрос на GitHub?)

Моя работа вокруг reset заключается в следующем:

from tensorflow.python.framework import ops
ops.reset_default_graph()
sess = tf.InteractiveSession()

Ответ 2

По умолчанию сеанс создается вокруг графика по умолчанию. Чтобы избежать оставления мертвых узлов в сеансе, вам нужно либо управлять графиком по умолчанию, либо использовать явный график.

  • Чтобы очистить график по умолчанию, вы можете использовать функцию 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], ...)
    

EDIT: для последних версий tensorflow (1.0+) правильная функция g.as_default.

Ответ 3

Ячейки ноутбуков IPython/Jupyter сохраняют состояние между прогонами ячейки.

Создайте собственный график:

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

with tf.Graph().as_default():
    main()

После запуска граф очищается.

Ответ 4

Не уверен, столкнулся ли я с той же проблемой, но

tf.keras.backend.clear_session()

в начале ячейки, в которой была построена и обучена модель (в моем случае Keras), помогла "сократить беспорядок", так что только текущий график остается в визуализации TensorBoard после повторных прогонов одной и той же ячейки.

Среда: TensorFlow 2.0 (tensorflow-gpu==2.0.0b1) в Colab со встроенным TensorBoard (с использованием %load_ext tensorboard).