【发布时间】:2016-08-01 13:38:54
【问题描述】:
我创建了一个包装类,它初始化了一个keras.models.Sequential 模型,并且有几个方法来启动训练过程和监控进度。我在我的main 文件中实例化这个类并执行训练过程。相当平凡的东西。
我的问题是:
如何释放tensorflow分配的所有GPU内存。我尝试了以下方法,但没有成功:
import keras.backend.tensorflow_backend as K
with K.get_session() as sess:
K.set_session(sess)
import tensorflow as tf
from neural_net import NeuralNet
with tf.device('/gpu:0'):
nn = NeuralNet('config', train_db_path, test_db_path)
nn.train(1000, 1)
print 'Done'
K._SESSION.close()
K.set_session(None)
即使会话已关闭并重置为None,nvidia-smi 也不会反映内存使用量的任何减少。有什么想法吗?
想法
将__exit__ 方法添加到我的NeuralNet 类并将其实例化为:
with NeuralNet() as nn:
nn.train(1000, 1)
这种方法应该如何释放keras模型的资源?
测试环境
我在带有 3 个 GTX 960 GPU 的 Ubuntu 14.04 上使用 iPython Notebook。
参考:
【问题讨论】:
-
想知道您是否找到了解决方案!我似乎无法找到一种方法让 tensorflow(通过 keras)释放内存而不退出 python 进程
-
不。远离 Keras。仅使用带有图形和会话的 tensorflow。
-
你试过 K.clear_session()
标签: python gpu tensorflow deep-learning keras