【发布时间】:2019-06-20 08:11:27
【问题描述】:
首先,我想在进程之前给出内存信息。
pmem(rss=288796672, vms=4105973760, shared=107503616, text=2039808, lib=0, data=771235840, dirty=0)
我使用 Keras 构建了一个模型并将其分配给 model 变量。然后,我将model 对象发送到类构造函数进行克隆:
from tensorflow.python.keras.models import clone_model
from tensorflow.python.keras import backend as K
class Source:
def __init__(self, model):
config = Config()
self.model = clone_model(model)
# breakpoint to read memory
self.model.compile(optimizer=config.optimizer, loss=config.loss, metrics=config.metrics)
克隆完成后的内存信息如下:
pmem(rss=289615872, vms=4333002752, shared=107843584, text=2039808, lib=0, data=797331456, dirty=0)
到目前为止,一切都很好。当我尝试通过del self.model删除self.model对象时,内存并没有减少。
pmem(rss=289615872, vms=4333002752, shared=107843584, text=2039808, lib=0, data=797331456, dirty=0)
然后我尝试通过gc.collect()执行垃圾收集器,结果还是一样,没有任何变化。
pmem(rss=289615872, vms=4333002752, shared=107843584, text=2039808, lib=0, data=797331456, dirty=0)
最后,我尝试使用K.clear_session() 清除会话。一切都没有再改变。
pmem(rss=289615872, vms=4333002752, shared=107843584, text=2039808, lib=0, data=797331456, dirty=0)
Keras 版本: 2.1.6(从上一个版本降级以解决此问题但不起作用。)
Tensorflow 版本: 2.0.0-alpha0
【问题讨论】:
-
结帐this answer.
-
@Mitiku
K.clear_session()与该答案中的方法相同。还是不是?
标签: python tensorflow keras