Keras内存泄漏

时间:2018-08-02 00:27:29

标签: python tensorflow memory-leaks keras gpu

我正在使用Keras TensorFlow 1.8,并且我的GPU(1080 ti)中发生内存泄漏。训练网络后,即使完全关闭python,我的内存也被使用。在nvidia-smi中,它不再显示python,但内存使用情况仍然存在。

我无法重新启动计算机,因为其他用户正在运行进程(我确定他们没有使用gpu)。

[编辑:我上传了错误的屏幕截图]

enter image description here

2 个答案:

答案 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)