<メモ>Tensorflowのsessionをループ内で複数回open/closeするとメモリ不足になる

ずっと悩んでたのが解決したのでメモします。

Tensorflowのsessionをループ内で複数回open/closeするとメモリ不足になる

同一コード内で、Tensorflowのsessionを何度もopen/closeするプログラムを組んでいました。
するとちょっとずつ使用メモリが膨らんでいき、最後にはメモリー不足でプログラムが止まってしまう、という問題がずっとありました。

ガベージコレクションを試してみたのですが全く解決せず一旦放置していたのですが、
ついに見つかりました。
参考サイトは以下です。
stackoverflow.com

この質問に対する回答で、以下が記載されていました。

Explicitly create a new graph in each for loop. This might be necessary if the structure of the graph depends on the data available in the current iteration. You would do this as follows

for step in xrange(200):
    with tf.Graph().as_default(), tf.Session() as sess:
        # Remainder of loop body goes here.

計算グラフは、sessionをcloseしてもメモリ上に残るようです。
なので、繰り返し行う場合は、「どの計算グラフを使うか」を明示的に示す必要があるみたいです。

tensorflowの計算グラフが未だに十分理解できていません・・・。