ProgramingTip

그래프에서 노드를 제거하거나 전체 기본 그래프를 제거하거나

bestdevel 2020. 11. 30. 19:22
반응형

그래프에서 노드를 제거하거나 전체 기본 그래프를 제거하거나


기본 글로벌 그래프로 할 때 노드가 추가 된 후 노드를 제거하거나 기본 글로벌 그래프로 작업 할 때 노드가 추가 된 후 노드를 제거하거나 기본 그래프를 비어있는 상태로 작업 할 수 있습니까? IPython에서 대화식으로 TF로 작업 할 때 반복적으로 다시 시작해야합니다. 가능하면 그래프를 좀 더 쉽게 실험 해보고 싶습니다.


2016 년 11 월 2 일 업데이트

tf.reset_default_graph()

오래된 물건

거기 reset_default_graph공개 API의 일부 (I, 그것은해야 생각 누군가가하고 싶어하지,하지만 문제를 제기 GitHub의에가?)

다음과 가능합니다.

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

기본적으로 세션은 기본 그래프를 중심으로 구성됩니다. 세션에 데드 노드를 남기지 사용면 기본 그래프를 제어하거나 명시 적 그래프를 사용합니다.

  • 기본 그래프를 지우려면 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], ...)
    

편집 : tensorflow(1.0+) 의 최신 버전의 경우 올바른 기능은 .g.as_default


IPython / Jupyter 노트북 셀은 셀 실행 사이에 상태를 유지합니다.

사용자 정의 그래프를 만듭니다.

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

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

실행되면 그래프가 정리됩니다.


내가 똑같은 문제에 직면했지만

tf.keras.backend.clear_session()

모델 (내 경우에는 Keras)이 구성되고 훈련 된 셀의 시작 부분에서 "혼잡함을 줄이는"데 도움이되는 경우에도 셀을 반복 실행 한 후에도 현재 그래프 만 TensorBoard에 남아 있습니다.

환경 : tensorflow-gpu==2.0.0b1TensorBoard가 내장 된 Colab의 TensorFlow 2.0 ( ) ( %load_ext tensorboard트릭 사용).

참고 URL : https://stackoverflow.com/questions/33765336/remove-nodes-from-graph-or-reset-entire-default-graph

반응형