如何清除/删除张量流中的张量?

时间:2018-07-06 17:55:58

标签: python tensorflow garbage-collection deep-learning

据我了解,tf.reset_default_graph()仅创建一个新图并将其设置为等于默认图。因此,先前创建的张量将只占据内存。我还阅读了未引用的张量不是垃圾收集的(就像Python中的普通变量一样)。

如果我正在运行交叉验证以搜索一组超参数并因此创建相同的图,那么如何一次又一次地摆脱以前创建的张量?

1 个答案:

答案 0 :(得分:3)

在设计实验时,我遇到了同样的问题,在研究了这个问题之后,唯一对我有用的解决方案是this one。正如您在该链接中看到的那样,这似乎是设计缺陷,并且TF团队似乎并不关心修复。

解决方案是为每次交叉验证迭代创建一个新过程。因此,当该过程完成时,系统将杀死它并自动释放资源。

import multiprocessing

def evaluate(...):
    import tensorflow as tf
    # Your logic

for ... in cross_valiadtion_loop:
    process_eval = multiprocessing.Process(target=evaluate, args=(...))
    process_eval.start()
    process_eval.join()