2015-11-17 2 views
47

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

ответ

71

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

tf.reset_default_graph()

Старые вещи

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

Мой рабочий процесс для перезагрузки:

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

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

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

+2

В tensorflow> = 1.0 это 'g.as_default()' –

+0

Правописание: в заявлении вы забыли символ подчеркивания в g.as_default() – user3750988

+0

так рад, что нашел этот ответ. меня заводила ... –

3

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

Создать пользовательский график:

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

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

После выбежала, график будет очищен.

Смежные вопросы