zoukankan      html  css  js  c++  java
  • 【转】tf.train.MonitoredTrainingSession()解析

    原文地址:https://blog.csdn.net/mrr1ght/article/details/81006343。 本文有删减。

    MonitoredTrainingSession定义

    首先,tf.train.MonitorSession()从单词的字面意思理解是用于监控训练的回话,返回值是tf.train.MonitorSession()类的一个实例Object, tf.train.MonitorSession()会在下面讲。

    MonitoredTrainingSession(
        master='',
        is_chief=True,
        checkpoint_dir=None,
        scaffold=None,
        hooks=None,
        chief_only_hooks=None,
        save_checkpoint_secs=600,
        save_summaries_steps=USE_DEFAULT,
        save_summaries_secs=USE_DEFAULT,
        config=None,
        stop_grace_period_secs=120,
        log_step_count_steps=100
    
    

    Args:

    • is_chief:用于分布式系统中,用于判断该系统是否是chief,如果为True,它将负责初始化并恢复底层TensorFlow会话。如果为False,它将等待chief初始化或恢复TensorFlow会话。
    • checkpoint_dir:一个字符串。指定一个用于恢复变量的checkpoint文件路径。
      scaffold:用于收集或建立支持性操作的脚手架。如果未指定,则会创建默认一个默认的scaffold。它用于完成图表
      hooks:SessionRunHook对象的可选列表。可自己定义SessionRunHook对象,也可用已经预定义好的SessionRunHook对象,如:tf.train.StopAtStepHook()设置停止训练的条件;tf.train.NanTensorHook(loss):如果loss的值为Nan则停止训练;
      chief_only_hooks:SessionRunHook对象列表。如果is_chief== True,则激活这些挂钩,否则忽略。
      save_checkpoint_secs:用默认的checkpoint saver保存checkpoint的频率(以秒为单位)。如果save_checkpoint_secs设置为None,不保存checkpoint。
    • save_summaries_steps:使用默认summaries saver将摘要写入磁盘的频率(以全局步数表示)。如果save_summaries_steps和save_summaries_secs都设置为None,则不使用默认的summaries saver保存summaries。默认为100
    • save_summaries_secs:使用默认summaries saver将摘要写入磁盘的频率(以秒为单位)。如果save_summaries_steps和save_summaries_secs都设置为None,则不使用默认的摘要保存。默认未启用。
    • config:用于配置会话的tf.ConfigProtoproto的实例。它是tf.Session的构造函数的config参数。
      stop_grace_period_secs:调用close()后线程停止的秒数。
      log_step_count_steps:记录全局步/秒的全局步数的频率

    Returns:  一个·MonitoredSession(·) 实例。

    tf.train.MonitoredSession()使用示例

    saver_hook = CheckpointSaverHook(...)
    summary_hook = SummarySaverHook(...)
    with MonitoredSession(session_creator=ChiefSessionCreator(...),
                          hooks=[saver_hook, summary_hook]) as sess:
        while not sess.should_stop():
            sess.run(train_op)
    

    Args:

    • session_creator:制定用于创建回话的ChiefSessionCreator
    • hooks:tf.train.SessionRunHook()实例的列表

    Returns: 一个MonitoredSession 实例。

    • 初始化:在创建一个MonitoredSession时,会按顺序执行以下操作:

      • 调用[Hooks]列表中每一个Hook的begin()函数
      • 通过scaffold.finalize()完成图graph的定义
      • 创建会话
      • 用Scaffold提供的初始化操作(op)来初始化模型
      • 如果给定checkpoint_dir中存在checkpoint文件,则用checkpoint恢复变量
      • 启动队列线程
      • 调用hook.after_create_session()
    • Run:当调用run()函数时,按顺序执行以下操作

      • 调用hook.before_run()
      • 用合并后的fetches 和feed_dict调用TensorFlow的session.run() (这里是真正调用tf.Session().run(fetches ,feed_dict))
      • 调用hook.after_run()
      • 返回用户需要的session.run()的结果
      • 如果发生了AbortedError或者UnavailableError,则在再次执行run()之前恢复或者重新初始化会话
    • Exit:当调用close()退出时,按顺序执行下列操作

      • 调用hook.end()
      • 关闭队列线程queuerunners和会话session
      • 在monitored_session的上下文中,抑制由于处理完所有输入抛出的OutOf Range错误。


    MARSGGBO原创





    2019-10-21 11:23:38



  • 相关阅读:
    Java第一课
    bootstrap之google fonts
    bootstrap之clearfix
    Leetcode题解
    python图片爬虫
    [python / selenium]
    使用python
    python
    python
    python爬虫入门新手向实战
  • 原文地址:https://www.cnblogs.com/marsggbo/p/11712591.html
Copyright © 2011-2022 走看看