ฉันต้องการที่จะหาสิ่งที่กระทำที่เพิ่มบรรทัดต่อไปนี้ของรหัสsolver.cppสำหรับห้องสมุดการเรียนรู้ลึกCaffeซึ่งเป็นโฮสต์บน Github ฉันไม่ได้เป็นผู้มีส่วนร่วมหรือมีสิทธิ์พิเศษใด ๆ ฉันจะทำอย่างไร
template <typename Dtype>
void SGDSolver<Dtype>::ClipGradients() {
const Dtype clip_gradients = this->param_.clip_gradients();
if (clip_gradients < 0) { return; }
const vector<shared_ptr<Blob<Dtype> > >& net_params = this->net_->params();
Dtype sumsq_diff = 0;
for (int i = 0; i < net_params.size(); ++i) {
if (this->net_->param_owners()[i] < 0) {
sumsq_diff += net_params[i]->sumsq_diff();
}
}
const Dtype l2norm_diff = std::sqrt(sumsq_diff);
if (l2norm_diff > clip_gradients) {
Dtype scale_factor = clip_gradients / l2norm_diff;
LOG(INFO) << "Gradient clipping: scaling down gradients (L2 norm "
<< l2norm_diff << " > " << clip_gradients << ") "
<< "by scale factor " << scale_factor;
for (int i = 0; i < net_params.size(); ++i) {
if (this->net_->param_owners()[i] < 0) {
net_params[i]->scale_diff(scale_factor);
}
}
}
}