1.Solver简介
Solver通过协调Net的前向推断计算和反向梯度计算来对参数进行更新,从而达到减小loss的目的。Caffe模型的学习被分为了两部分:Solver进行更新优化参数,Net进行计算loss和gradient。
Caffe所支持的solvers如下:
Stochastic Gradient Descent(type: "SGD")
AdaDelta(type: "AdaDelta")
Adaptive Gradient(type: "AdaGrad")
Adam(type: "Adam")
Nesterov's Accelerated Gradient(type: "Nesterov")
RMSProp(type: "RMSProp")
Solver:
1.用于优化过程的记录,创建训练网络(用于学习),测试网络(用于评估)。
2.通过forward和backward过程来迭代优化和更新参数。
3.周期性地测试网络评估性能
4.在优化过程中记录模型和solver的snapshot(快照)。
每一次迭代中:
1.调用Net的前向过程计算出输出和loss。
2.调用Net的后向过程计算出梯度。
3.根据下述的Solver方法,利用梯度更新参数。
4.根据学习率(lr),历史数据和求解方法更新solver状态,是参数从初始化状态逐渐更新到最终的学习到的状态。solver运行模式有CPU/GPU两种模式。
2.Methods
solver方法用于最小化loss。在每一次迭代中,采用数据集的一个随机子集(mini-batch)来近似代替,其数据量远远小于整个数据集。
关于methods的介绍,推荐以下的这篇文章,介绍得很全面。
https://zhuanlan.zhihu.com/p/22252270