机器学习 – 在caffe中定义新图层时如何获得学习率或迭代次数

我希望在迭代次数达到一定数量时更改损耗层中的损失计算方法.

为了实现它,我认为我需要获得当前的学习速率或迭代次数,然后我使用if短语来选择改变损失计算方法. 最佳答案 您可以在Caffe类中添加成员变量以保存当前学习速率或迭代次数,并在您想要的层中访问它.

例如,要获得您想要的当前迭代次数,您需要进行3次关键修改(为简化起见):

>在common.hpp

  class Caffe {
    public:
      static Caffe& Get();

      ...//Some other public members

      //Returns the current iteration times
      inline static int current_iter() { return Get().cur_iter_; }
      //Sets the current iteration times
      inline static void set_cur_iter(int iter) { Get().cur_iter_ = iter; }

    protected:

      //The variable to save the current itertion times
      int cur_iter_;

      ...//Some other protected members
  }

>在solver.cpp

  template <typename Dtype>
  void Solver<Dtype>::Step(int iters) {

    ...

    while (iter_ < stop_iter) {
      Caffe::set_cur_iter(iter_ );
      ...//Left Operations
    }
  }

>您要访问当前迭代次数的位置:

  template <typename Dtype>
  void SomeLayer<Dtype>::some_func() {
    int current_iter = Caffe::current_iter();
    ...//Operations you want
  }
点赞