【问题标题】:How to stop training based on loss when using Pre-trained model and Configuration file?使用预训练模型和配置文件时如何根据损失停止训练?
【发布时间】:2020-09-04 02:28:28
【问题描述】:

我正在使用更快的 RCNN 模型来训练对象检测器,使用 Pipeline 配置文件。我知道可以通过直接取消(ctrl+c)来停止训练。 我希望训练根据损失值自动停止。如何才能做到这一点? 我知道在监控时代时可以使用 keras 回调。使用配置文件和预训练模型(监控步骤)时是否有任何此类选项。 谢谢。

【问题讨论】:

    标签: python tensorflow keras pre-trained-model early-stopping


    【解决方案1】:

    这可能只是一个 hack,但我找到了解决问题的方法。 对象检测器需要安装tf_slim 包。在tf_slim 包中,有一个名为learning.py 的模块。 完整的路径可能如下所示:/usr/local/lib/python3.6/site-packages/tf_slim/learning.pylearning.py 中,从第 764 行开始,代码如下所示:

    try:
      while not sv.should_stop():
        total_loss, should_stop = train_step_fn(sess, train_op, global_step,
                                                train_step_kwargs)
        if should_stop:
          logging.info('Stopping Training.')
          sv.request_stop()
          break
    except errors.OutOfRangeError as e:
    # OutOfRangeError is thrown when epoch limit per
    # tf.compat.v1.train.limit_epochs is reached.
    logging.info('Caught OutOfRangeError. Stopping Training. %s', e)
    

    我写了一个小的if 语句来检查total_loss 的最后五个值的最大值,如果低于某个阈值(在本例中为3),则使should_stopTrue。如下所示:

    try:
      total_loss_list = []
      while not sv.should_stop():
        total_loss, should_stop = train_step_fn(sess, train_op, global_step,
                                                train_step_kwargs)
        total_loss_list.append(total_loss)
        if len(total_loss_list) > 5:
          if max(total_loss_list[-5:]) < 3:
            should_stop = True
        if should_stop:
          logging.info('Stopping Training.')
          sv.request_stop()
          break
    except errors.OutOfRangeError as e:
      # OutOfRangeError is thrown when epoch limit per
      # tf.compat.v1.train.limit_epochs is reached.
      logging.info('Caught OutOfRangeError. Stopping Training. %s', e)
    

    如果损失值连续五步低于 3,则训练停止。这样做的缺点是,tf_slim 的包分发必须更改。并且每次处理新的对象检测问题时,这个阈值损失值都会发生变化。更好的方法是使用您提供阈值损失值的配置文件。但我暂时停在这里。 如果其他人有更好的解决方案,请分享。 我希望这可以帮助别人。谢谢!

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      相关资源
      最近更新 更多