Tensorflow 在会话关闭后不会释放内存



我有两个模型。

当我分别运行模型 A 和 B 时,它们都适用于训练和测试。 为了更有效地使用相同的数据集训练两个模型, 我把他们的运行代码放在一起。

A.training()
A.close_session() # this closes session with sess.close()
B.training()

在 B.training(( 它发生资源耗尽错误!

所以当我在 A.training(( 之后执行 sess.close(( 时,它似乎不会释放内存。这个"sess"也是 A 和 B 单独具有的属性。- 意思是,它被用作自我。

这是一个错误吗?有解决办法吗?

.

.

我已经用谷歌搜索并阅读了一些参数,但只有关闭会话不会释放 GPU 内存。如何释放 GPU 内存,以便下一个型号可以使用它?

Tensorflow不喜欢在同一线程中调用多个会话。

一种解决方法是将 A.training(( 和 B.training(( 放在不同的进程中。 下面是一个快速演练:

from multiprocessing import Process
def train_func():
train(
learning_rate = 0.001
...
)
p = Process(target=train_func, args=tuple())
p.start()
p.join()

最新更新