ApplyUpdata
в кафе показано ниже.И я получаю два вопроса:
Действительно ли параметры обновляются в ApplyUpdata
?backward
только вычислить градиент, но ничего не сделано с параметрами?
Что означает this->iter_
?Если взять в качестве примера GAN
обучение, как мне поступить с this->iter_
, если я хочу тренировать генератор три раза, а дискриминатор тренируется только один раз, так как ApplyUpdate
увеличит this->iter_
три раза для генератора, но только один раз для дискриминатора.
THX!
void SGDSolver<Dtype>::ApplyUpdate() {
Dtype rate = GetLearningRate();
if (this->param_.display() && this->iter_ % this->param_.display() == 0) {
LOG_IF(INFO, Caffe::root_solver()) << "Iteration " << this->iter_
<< ", lr = " << rate;
}
ClipGradients();
for (int param_id = 0; param_id < this->net_->learnable_params().size();
++param_id) {
Normalize(param_id);
Regularize(param_id);
ComputeUpdateValue(param_id, rate);
}
this->net_->Update();
// Increment the internal iter_ counter -- its value should always indicate
// the number of times the weights have been updated.
++this->iter_;
}