Tensorflow 对象检测:使用 Adam 而不是 RMSProp

Tensorflow Object Detection: use Adam instead of RMSProp

我正在使用这个 [.config 文件][1]:

训练 CNN
rms_prop_optimizer: {
    learning_rate: {
      exponential_decay_learning_rate {
        initial_learning_rate: 0.004
        decay_steps: 800720
        decay_factor: 0.95
      }
    }
   momentum_optimizer_value: 0.9
   decay: 0.9
   epsilon: 1.0
}   

}
As you can see there is a rms_prop as optimizer. What if I would like to use Adam? How am I supposed to edit this file?

如果我是对的,您正在尝试将 object_detection 模型与 Tensorflow 提供的预训练网络一起使用,对吗? 然后,如果你懂一点编程,你可以看一下 models/research/object_detection/builders/optimizer_builder.py ,看看可以使用哪些优化器以及使用哪些参数。 相反,如果您只想要一个开箱即用的解决方案,我就是这样做的:

optimizer {
    # momentum_optimizer {
    adam_optimizer: {
      learning_rate: {
        manual_step_learning_rate {
          initial_learning_rate: .0002
          schedule {
            step: 4500
            learning_rate: .0001
          }
          schedule {
            step: 7000
            learning_rate: .00008
          }
          schedule {
            step: 10000
            learning_rate: .00004
          }
        }
      }
      # momentum_optimizer_value: 0.9
    }
    use_moving_average: false
  }

在我的(小)经验中,我注意到使用与 momentum_optimizer 相同的 learning_experience 会使学习速度过快 and/or 带来 NaN 损失,所以我通常将其减少 10次或更多。我正在尝试。 :)

对不起,我迟到了,但我现在正在研究这个领域。

我意识到我们可以在这个目录中检查一些 ADAM 优化器的例子:

Tensorflow/models/research/object_detection/builders/optimizer_builder_tf2_test.py

这是我的 pipeline.config 中没有调度的优化器配置:

optimizer {
    adam_optimizer: {
      learning_rate: {
        constant_learning_rate {
          learning_rate: 0.0001
        }
      }
    }
    use_moving_average: false
  }