据我了解,tf.reset_default_graph()
仅创建一个新图并将其设置为等于默认图。因此,先前创建的张量将只占据内存。我还阅读了未引用的张量不是垃圾收集的(就像Python中的普通变量一样)。
如果我正在运行交叉验证以搜索一组超参数并因此创建相同的图,那么如何一次又一次地摆脱以前创建的张量?
答案 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()