我正在使用Keras TensorFlow 1.8,并且我的GPU(1080 ti)中发生内存泄漏。训练网络后,即使完全关闭python,我的内存也被使用。在nvidia-smi中,它不再显示python,但内存使用情况仍然存在。
我无法重新启动计算机,因为其他用户正在运行进程(我确定他们没有使用gpu)。
[编辑:我上传了错误的屏幕截图]
答案 0 :(得分:0)
总是
K.clear_session()
其中K定义为
from keras import backend as K
在处理结束时。
它可以防止Tensorflow内存泄漏。
您也可以尝试
import gc
gc.collect()
或
从您的tf会话开始时,使用整个gpu功率阻止张量流:
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
sess = tf.Session(config=config)
答案 1 :(得分:0)
在尝试keras.clear_session()
和gc.collect()
我的方式通过这个方式太多之后,我放弃并创建了一个可靠的解决方法。它是一个装饰器,允许在单独的脚本中运行一个函数。
它叫做 scriptifier
,它通过 pip install scriptifier
安装
它会自动生成脚本并负责传递参数和返回值,只要它们是可腌制的或 keras 模型或 keras 模型列表...(有关文档,请参阅:github)
它应该是这样的:
from scriptifier import scriptifier
def func_1(in):
...
model.fit()
...
return out
scriptified_func_1 = scriptifier.run_as_script(func_1)
out = scriptified_func_1(in)