【问题标题】:Change training parameters in the config file after training for a certain number of steps using the Tensorflow Object Detection API使用 Tensorflow 对象检测 API 训练一定数量的步骤后,更改配置文件中的训练参数
【发布时间】:2019-12-04 17:07:17
【问题描述】:

到目前为止,我已经在一个数据集上训练了一个 Inception Resnet v2 模型 61000 步,该模型的配置文件中包含以下值:

adam_optimizer: {
      learning_rate: {
        manual_step_learning_rate {
          initial_learning_rate: 0.0003
          schedule {
            step: 150000
            learning_rate: .0001
          }

现在,如果我想从现在开始降低模型的学习率,将进行以下更改:

adam_optimizer: {
      learning_rate: {
        manual_step_learning_rate {
          initial_learning_rate: 0.0003
          schedule {
            step: 60000
            learning_rate: .0001
          }

从检查点重新开始实际上将我的模型的学习率从0.0003 降低到0.0001,因为到目前为止它已经训练的步数大于 60000? 如果没有,还有其他方法可以实现吗?

【问题讨论】:

    标签: python tensorflow deep-learning object-detection object-detection-api


    【解决方案1】:

    一种可能的方法是使用已经训练好的 61000 步模型文件作为微调检查点,然后您可以根据需要修改 lr。在这种情况下,您实际上是从第 1 步开始训练。

    【讨论】:

    • 所以你的意思是说,如果我使用经过训练的 61000 步模型文件作为微调检查点,我应该将行 initial_learning_rate: 更改为 0.0001 而不是 0.0003,因为训练开始从第 1 步开始?
    • 但为了澄清起见,我注意到如果我在 61000 保存了一个检查点,在我再次恢复后,下一步从 61001 开始而不是 1。这一步 1 使用initial_learning_rate 或配置文件中第 60000 步后设置的学习率(如果我在训练过程中第 60000 步后设置了学习率衰减)?
    • 这是我的建议,备份model 文件夹内的所有文件,删除它们并重试。因为如果保存的模型文件夹中有这样的文件,TensorFlow 对象检测会自动从上次保存的检查点恢复。至于学习率,如果从第一步开始,应该是initial_learning_rate
    • 好的,我会试试的。我的疑问是,如果我从上一个检查点(步骤 61001)恢复,它将被解释为 61001 而不是步骤 1 对吗?如果是这样的话,那么我想学习率应该是 0.0001。如果我理解正确,请告诉我
    • 是的,你是对的。直接恢复将从步骤 61001 开始,为您提供 1e-4 的学习率
    【解决方案2】:

    转到您的配置文件并搜索此节点,然后添加粗线 train_config: { num_steps: 5000

    【讨论】:

    • 嗨,NobDev,这如何回答这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2018-08-28
    相关资源
    最近更新 更多