【发布时间】:2018-07-23 10:17:31
【问题描述】:
我正在加载一个我之前训练过的 keras 模型,用他的权重初始化另一个网络。不幸的是,我加载的模型填满了我的全部记忆,使得新模型的训练变得不可能。这是代码:
import gc
import keras
from keras.models import model_from_json
def loadModel (path, loss=None, optimizer=None):
with open(path + '/model.json', 'r') as f:
model = model_from_json(f.read())
model.load_weights(path + '/model.h5')
if loss and optimizer:
model.compile(loss=loss, optimizer=optimizer)
return model
model = loadModel('the/path/to/my/model')
# The GPU memory is filled
keras.backend.clear_session()
# memory still filled
del model
gc.collect()
# memory still filled
我检查了多个帖子,通常gc.collect() 或clear_session() 可以解决问题,但对我来说,到目前为止还行不通。有什么想法吗?
PS:我使用 tensorflow 作为后端。
【问题讨论】:
-
默认情况下,TensorFlow会分配GPU中的所有内存并在内部进行管理,你确定不是这个?
-
@MatiasValdenegro 完全是这样,我发布了一个答案并引用了你,谢谢。
标签: python tensorflow keras deep-learning