您的位置:首页 > Web前端

Caffe深入分析(源码)

2017-08-05 13:05 253 查看

Caffe的整体流程图:

1 template <typename Dtype>
2 void SGDSolver<Dtype>::ApplyUpdate()
3 {
4     // 获取当前学习速率
5     Dtype rate = GetLearningRate();
6     if (this->param_.display() && this->iter_ % this->param_.display() == 0)
7     {
8         LOG(INFO) << "Iteration " << this->iter_ << ", lr = " << rate;
9     }
10
11     // 在计算当前梯度的时候,如果该值超过了阈值clip_gradients,则将梯度直接设置为该阈值
12     // 此处阈值设为-1,即不起作用
13     ClipGradients();
14
15     // 逐层更新网络中的可学习层
16     for (int param_id = 0; param_id < this->net_->learnable_params().size();
17        ++param_id)
18     {
19         // 归一化
20         Normalize(param_id);
21         // L2范数正则化添加衰减权重
22         Regularize(param_id);
23         // 随机梯度下降法计算更新值
24         ComputeUpdateValue(param_id, rate);
25     }
26     // 更新权重
27     this->net_->Update();
28 }


ApplyUpdate
最后将迭代次数++iter_,继续while循环,直到迭代次数完成。 这就是整个网络的训练过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: