Mil*_*der 9 python garbage-collection deep-learning tensorflow
据我了解,tf.reset_default_graph()只创建一个新图形并将其设置为等于默认图形。因此,先前创建的张量将只是躺在周围占据内存。我也读过未引用的张量不是垃圾收集的(就像 Python 中的普通变量一样)。
如果我正在运行交叉验证来搜索一组超参数并因此一次又一次地创建相同的图形,我如何摆脱以前创建的张量?
我在设计实验时遇到了同样的问题,在研究了这个问题之后,唯一对我有用的解决方案就是这个。正如您可以在该链接中读到的那样,这似乎是一个设计缺陷,并且 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()
Run Code Online (Sandbox Code Playgroud)