当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.train.Supervisor.managed_session用法及代码示例


用法

@contextlib.contextmanager
managed_session(
    master='', config=None, start_standard_services=True,
    close_summary_writer=True
)

参数

  • master 要使用的 TensorFlow master 的名称。请参阅tf.compat.v1.Session 构造函数了解如何解释。
  • config 用于配置会话的可选ConfigProto proto。通过as-is 来创建会话。
  • start_standard_services 是否启动标准服务,例如检查点、摘要和计步器。
  • close_summary_writer 关闭会话时是否关闭摘要编写器。默认为真。

返回

  • 一个上下文管理器,它产生从最新检查点恢复的 Session,如果不存在检查点,则从头开始初始化。当with 块退出时会话关闭。

返回托管会话的上下文管理器。

此上下文管理器创建并自动恢复会话。它可以选择启动处理检查点和摘要的标准服务。它监视从with 块或服务引发的异常,并根据需要停止主管。

上下文管理器通常按如下方式使用:

def train():
  sv = tf.compat.v1.train.Supervisor(...)
  with sv.managed_session(<master>) as sess:
    for step in range(..):
      if sv.should_stop():
        break
      sess.run(<my training op>)
      ...do other things needed at each training step...

当块退出时,从with 块或服务线程之一引发的异常再次引发。这是在停止所有线程并关闭会话之后完成的。例如,AbortedError 异常,在分布式模型中的一个工人抢占的情况下引发,当块退出时再次引发。

如果你想在抢占的情况下重试训练循环,你可以这样做:

def main(...):
  while True
    try:
      train()
    except tf.errors.Aborted:
      pass

作为一种特殊情况,用于控制流的异常,例如报告输入队列已用尽的OutOfRangeError,不会再次从with 块中引发:它们表示训练循环的干净终止,并被视为正常终止。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.train.Supervisor.managed_session。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。