如何处理未从GPU(keras)释放的内存?

如何处理未从GPU(keras)释放的内存?,keras,Keras,下面是我的代码。显然,我在每个历元后调用gc.collect(),但是,我的GPU在第三个历元时内存不足。我假设第一个纪元使用的内存应该在第三个纪元之前释放,特别是当这是一个每个纪元运行1800秒的大型体系结构时,但事实并非如此。我能知道我做错了什么吗?我使用的是pascal Titan X,内存为12gb。我尝试了tensorflow和theano。找到解决方案了吗?@Goddard Nope。是吗?在我的情况下,我没有关闭另一个锁定内存的程序。找到解决方案了吗?@Goddard Nope。是

下面是我的代码。显然,我在每个历元后调用gc.collect(),但是,我的GPU在第三个历元时内存不足。我假设第一个纪元使用的内存应该在第三个纪元之前释放,特别是当这是一个每个纪元运行1800秒的大型体系结构时,但事实并非如此。我能知道我做错了什么吗?我使用的是pascal Titan X,内存为12gb。我尝试了tensorflow和theano。

找到解决方案了吗?@Goddard Nope。是吗?在我的情况下,我没有关闭另一个锁定内存的程序。找到解决方案了吗?@Goddard Nope。是吗?就我而言,我没有关闭另一个锁定内存的程序。
train_generator = train_generator()
test_generator = test_generator()
print "...training model"
history = []
for i in xrange(NB_EPOCHS):
    start_time = time.time()
    avg_train_loss = [0.0] * 5
    avg_test_loss = [0.0] * 5
    for j in xrange(NB_TRAIN_ITERATIONS):
        (batch_data, batch_heatmaps) = train_generator.next()
        loss = model.train_on_batch(batch_data, batch_heatmaps)
        avg_train_loss += np.array(loss)
    avg_train_loss = avg_train_loss / NB_TRAIN_ITERATIONS
    for j in xrange(NB_TEST_ITERATIONS):
        (batch_data, batch_heatmaps) = test_generator.next()
        loss = model.test_on_batch(batch_data, batch_heatmaps)
        avg_test_loss += np.array(loss)
    avg_test_loss = avg_test_loss / NB_TEST_ITERATIONS        
    end_time = time.time()
    print "[Epoch %d]" % (i+1)
    print "Time spent: %.2f seconds" % (end_time - start_time) 
    print "Total train loss : %.16f | Total validation loss : %.16f" % (avg_train_loss[0], avg_test_loss[0])
    print "  hg1 train loss : %.16f |   hg1 validation loss : %.16f" % (avg_train_loss[1], avg_test_loss[1])
    print "  hg2 train loss : %.16f |   hg2 validation loss : %.16f" % (avg_train_loss[2], avg_test_loss[2])
    print "  hg3 train loss : %.16f |   hg3 validation loss : %.16f" % (avg_train_loss[3], avg_test_loss[3])
    print "  hg4 train loss : %.16f |   hg4 validation loss : %.16f" % (avg_train_loss[4], avg_test_loss[4])
    history.append([avg_train_loss, avg_test_loss])
    gc.collect()
np.save(PATH_HISTORY, history)
model.save(PATH_MODEL)