solver 是caffe的核心之重,它是整个模型运行的参数配置文件。运行代码一般为:
#caffe train --solver=*_solver.prototxt
在DL中,损失函数(loss function)是非凸的,没有解析解,我们需要通过优化的方法来求解。solver的作用就是交替调用前向(forward)算法和后向(backward)算法来更新参数,从而最小化损失(loss),实际上就是一种迭代的优化算法。
接下来,我们看一个实例:
net:"examples/myfile/train_val.prototxt" //设置深度网络模型。每一个模型就是一个net,需要在一个专门的配置文件中对net进行配置,每个net由许多的layer所组成。上面这句代码就是设置训练网络的,网络模型文件配置,即examples/myfile/文件下的train_val.prototxt里面的配置。
batchsize //每迭代一次,网络训练图片的数量,例如:如果你的batchsize=256,则你的网络每迭代一次,训练256张图片;则,如果你的总图片张数为1280000张,则要想将你所有的图片通过网络训练一次,则需要1280000/256=5000次迭代。
epoch //表示将所有图片在你的网络中训练一次所需要的迭代次数,如上面的例子:5000次;我们称之为 一代。所以