我打开和关闭的每个Tensorflow会话似乎从GPU内存消耗1280个字节,直到python内核终止才会释放.
要重现,请将以下python脚本保存为memory_test.py:
import tensorflow as tf
import sys
n_Iterations=int(sys.argv[1])
def open_and_close_session():
with tf.Session() as sess:
pass
for _ in range(n_Iterations):
open_and_close_session()
with tf.Session() as sess:
print("bytes used=",sess.run(tf.contrib.memory_stats.BytesInUse()))
Run Code Online (Sandbox Code Playgroud)
然后从命令行运行它,迭代次数不同:
python memory_test.py 0 产量 bytes used= 1280python memory_test.py 1收益率bytes used= 2560.python memory_test.py 10收益率bytes used= 14080.python memory_test.py 100收益率bytes used= 129280.python memory_test.py 1000收益率bytes used= 1281280.数学很简单 - 每个会话打开和关闭泄漏1280个字节.我在两个不同的ubuntu 17.10工作站上使用tensorflow-gpu 1.6和1.7以及不同的NVIDIA GPU测试了这个脚本.
我是否错过了一些明确的垃圾收集,还是Tensorflow错误?
编辑:请注意,与此问题中描述的情况不同,除了tf.Session()对象本身为'count'之外,我不会在循环中向默认全局图添加任何内容.如果是这种情况,怎么能删除它们? …