我使用的是Keras (2.4)和Tensorflow (2.3.1)后端。我正在使用grid-search调优一些元参数,因此需要多次调用模型创建和model.fit方法(训练是在只有一台GPU的机器上完成的)。
Tensorflow有一个记录在案的内存泄漏问题(e.g see here,但还有更多报告,只需在谷歌上搜索tensorflow memory leak)。我在过去遇到过这个问题,并结合使用小批量和手动调用Python的垃圾收集器,设法将其保持在最低级别。但现在在一个不同的项目上,我怀疑我又遇到了它。
我附上了一张监控内存使用情况的图片。15个小时,我的问题很简单--它看起来像是内存泄漏的结果吗?一方面,最大使用率随着时间的推移而增长。但是,另一方面,似乎释放(也许当模型实例被销毁并使用新参数创建时?)将大部分已用内存释放回(几乎)初始级别。

发布于 2021-09-02 08:08:39
tf.keras.backend.clear_session()怎么样?
遵循document
Keras管理全局状态,用于实现功能模型构建应用编程接口和唯一自动生成的层名。
如果要在循环中创建许多模型,此全局状态将随着时间的推移消耗越来越多的内存,您可能希望将其清除。调用clear_session()释放全局状态:这有助于避免旧模型和层的混乱,特别是在内存有限的情况下。
https://stackoverflow.com/questions/69026229
复制相似问题