Во-первых, я хотел бы предоставить информацию о памяти перед процессами.
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)
Пока все хорошо,Когда я пытаюсь удалить объект self.model
с помощью del 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