我的 TensorFlow 1.14 出现内存泄漏。我参考了 TensorFlow 的各种 GitHub 问题和内存泄漏来解决我的问题,我遵循了答案的建议,这似乎解决了问题。但是,它在这里不起作用。我什至将代码移植到 Tensorflow 2.1 和 2.3,但仍然无法解决问题。
每当我加载模型时,就会出现内存泄漏。我尝试在加载模型并使用垃圾收集 API 后清除会话,但泄漏仍然存在。
为了重现内存泄漏,我创建了一个简单的示例。我使用下面的函数来检查 python 进程使用的内存。
def memory_usage_func():
import os
import psutil
process = psutil.Process(os.getpid())
mem_used = process.memory_info()[0] >> 20
print("Memory used:", mem_used)
return mem_used
Run Code Online (Sandbox Code Playgroud)
下面是加载模型和检查内存使用情况的函数:
for i in range(100):
model = load_model('./model_example.h5', compile=False)
del model
memory_usage_func()
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,内存泄漏问题仍然存在。此外,我尝试进行预测。为此,我创建了一个会话,加载模型并运行 predict()。我也面临同样的内存泄漏问题。我使用tf.keras.backend.clear_session()和gc.collect()模型加载后。但是,它无法清除会话并释放内存。