caffe中文社区:http://caffecn.cn/
caffe中solver参数详解
# The train/test net protocol buffer definition# this follows "ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION"# 自己定义的网络结构,也可以将训练用的网络结构和测试用的网络结构分别定义# train_net: "examples/mnist/train.prototxt"# test_net: "examples/mnist/test.prototxt"
net: "examples/mnist/lenet_train_test.prototxt"# test_iter specifies how many forward passes the test should carry out.# In the case of MNIST, we have test batch size 100 and 100 test iterations,# covering the full 10,000 testing images.# 测试迭代次数,需要结合lenet_train_test.prototxt中测试阶段的输入数据来看# 就是最下面的那个数据层,最下面的那个层批处理大小是100的话,有10000个数据,因此,需要迭代10000/100=100次
test_iter: 100# Carry out testing every 500 training iterations.# 测试间隔,也就是每训练500次,测试一次
test_interval: 500# All parameters are from the cited paper above# 学习率的设置:基础学习率,也可以认为是初始化学习率
base_lr: 0.001# 上一次梯度权重,为什么要加这个权重?因为在有些优化求解的算法中,梯度更新的方向是呈现锯齿形状的,因此,为了让梯度更新的方向# 朝着总体是最优的方向进行,需要考虑上一次梯度的更新,而在物理学中理解来看,就是:动量,因此,加入该参数后权重的更新是上次权重与这次更新权重的加权和
momentum: 0.9
momentum2: 0.999# since Adam dynamically changes the learning rate, we set the base learning# rate to a fixed value# 学习率的更新策略,下面有学习率更新策略可选的参数
lr_policy: "fixed"# Display every 100 iterations
display: 100# The maximum number of iterations
max_iter: 10000# snapshot intermediate results# 每5000次保存一次中间结果,方便下次继续进行训练
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"# solver mode: CPU or GPU# 优化求解方法,可选方法见下面的具体讲解
type: "Adam"
solver_mode: GPU
一般的solver里面还会有一个权重衰减项:
weight_decay: 0.0005
网络权值越大往往overfitting的程度越高,因此,为了避免出现overfitting,会给误差函数添加一个惩罚项,常用的惩罚项是所有权重的平方乘以一个衰减常量之和