Caffe学习笔记2——超参数solver文件

寻找最优解策略

往往loss function是非凸的,没有解析解,我们需要通过优化方法来求解。caffe提供了六种优化算法来求解最优参数,在solver配置文件中,通过设置type类型来选择。

  1. Stochastic Gradient Descent (type: “SGD”),
  2. AdaDelta (type: “AdaDelta”),
  3. Adaptive Gradient (type: “AdaGrad”),
  4. Adam (type: “Adam”),
  5. Nesterov’s Accelerated Gradient (type: “Nesterov”) and
  6. RMSprop (type: “RMSProp”)

solver文件样例

net: "examples/mnist/lenet_train_test.prototxt"  
test_iter: 100
test_interval: 500
base_lr: 0.01
momentum: 0.9
type: SGD
weight_decay: 0.0005
lr_policy: "inv"
gamma: 0.0001
power: 0.75
display: 100
max_iter: 20000
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
solver_mode: CPU

参数含义

  1. net: “examples/mnist/lenet_train_test.prototxt” 表示网络位置,也可以分别设定train和test。
    train_net: “examples/hdf5_classification/logreg_auto_train.prototxt” #
    test_net: “examples/hdf5_classification/logreg_auto_test.prototxt”

  2. test_iter: 100 表示迭代了batch*test_iter个测试样本(假设有5000个测试样本,一次测试想跑遍这5000个则需要设置test_iter×batch=5000)

  3. test_interval: 500 表示测试间隔。也就是每训练500次,才进行一次测试。

  4. base_lr: 0.01 base_lr用于设置基础学习率

  5. lr_policy: “inv” 学习率调整的策略

    • fixed:   保持base_lr不变.
    • step:    如果设置为step,则还需要设置一个stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数
    • exp:   返回base_lr * gamma ^ iter, iter为当前迭代次数
    • inv:   如果设置为inv,还需要设置一个power, 返回base_lr * (1 + gamma * iter) ^ (* power)
    • multistep: 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而multistep则是根据 stepvalue值变化
    • poly:    学习率进行多项式误差, 返回 base_lr (1 * iter/max_iter) ^ (power)
    • sigmoid: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(gamma (iter * stepsize))))
  6. momentum :0.9 动量。基本不用改!!

  7. display: 100 每训练100次,在屏幕上显示一次。如果设置为0,则不显示。

  8. max_iter: 20000 最大迭代次数,2W次就停止了

  9. snapshot: 5000 快照。将训练出来的model和solver状态进行保存,snapshot用于设置训练多少次后进行保存

  10. snapshot_prefix: “examples/mnist/lenet” 设置保存路径

  11. solver_mode: CPU 设置运行模式。默认为GPU,如果你没有GPU,则需要改成CPU,否则会出错。

你可能感兴趣的:(深度学习)