我希望在迭代次数达到一定数量时更改损耗层中的损失计算方法.
为了实现它,我认为我需要获得当前的学习速率或迭代次数,然后我使用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
}