首页 > 解决方案 > Tensorflow Graph,用于交叉验证的会话管理

问题描述

在 Tensorflow 中实施交叉验证时,管理(初始化、关闭、重置)会话和图表的正确方法是什么?

我应该为每个折叠重置会话和图表,还是在整个过程中保持一个会话更好/可能?做后者的一个优点是资源在整个过程中都是绑定的,例如,当我在处理/保存折叠之间的结果时,防止在同一台机器上运行的一些不相关的进程占用 GPU。

保持相同的图形/会话并简单地通过以下方式重新初始化参数是否足够:

with tf.Graph().as_default():
    with tf.Session() as sess:
        # define model here #
        for fold in folds:
            init = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
            sess.run(init)
            # train model here #

另外,我想理想情况下,应该为每个折叠单独保存摘要(可能还有检查点?)。

标签: sessiontensorflowgraphcross-validation

解决方案


我更喜欢创建一个会话并根据需要使用它,这在速度和性能方面要好得多,然后如果我们关闭会话,那么我们可以收回资源。此外,如果我们使用 allow_growth 配置为 True,那么其他程序也将能够使用这些资源。


推荐阅读