session - 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 #
另外,我想理想情况下,应该为每个折叠单独保存摘要(可能还有检查点?)。
解决方案
我更喜欢创建一个会话并根据需要使用它,这在速度和性能方面要好得多,然后如果我们关闭会话,那么我们可以收回资源。此外,如果我们使用 allow_growth 配置为 True,那么其他程序也将能够使用这些资源。
推荐阅读
- android - PdfDocument - Cut page at the end of the layout
- lua - lua 过滤器迭代表行的问题
- elixir - 如何处理凤凰频道的客户状态
- xamarin.forms - 带有 Xamarin 表单支持 QR 码的 Google 移动视觉 api
- java - 从 ArrayList 中检索随机对象:不兼容的类型
- android - Flutter --launch 过去工作时现在挂起。如何删除设备并重新创建?
- java - Java Spring表单验证器检查输入字符串是否包含特殊字符
- symfony - 为什么第一次加载 symfony 后停止工作?
- python - 如何摆脱附加到超类实例列表的子类中的 eval?
- android - 使用带有输入字符串值的 webview