我有两个模型。
当我分别运行模型A和模型B时,它们都可以进行训练和测试。 为了更有效地训练具有相同数据集的两个模型, 我把他们的运行代码放在一起。
const observables = [];
for (let i = 0; i < this.originalData.length; i++) {
observables.push( this.dashboardService.getDetails(this.id1[i], this.id2[i])
};
forkJoin(...observables).subscribe(dataGroup => {
console.log(dataGroup);
});
在B.training()处发生资源耗尽错误!
因此,当我在A.training()之后执行sess.close()时,似乎并没有释放内存。这个“ sess”是A和B分别具有的一个属性。 -意思是它被用作self.sess
这是一个错误吗?有解决办法吗?
。
。
我用谷歌搜索了一些参数,但是只有关闭会话不会释放gpu内存。如何释放gpu内存以便下一个型号可以使用它?
答案 0 :(得分:3)
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()