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

时间:2018-08-19 08:20:56

标签: tensorflow object-detection

我正在使用此[.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
}   
     

}
  如您所见,有一个rms_prop作为优化器。如果我想使用亚当怎么办?我应该如何编辑该文件?

1 个答案:

答案 0 :(得分:3)

如果我是对的,那么您正在尝试将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会使学习速度过快和/或带来NaN损失,因此我通常将其减少10倍或更多倍。我正在尝试。 :)