Caffe solver.prototxt 文件参数解析

solver 算是 Caffe 的核心的核心,它协调着整个模型的运作。Caffe 程序运行必带的一个参数就是solver 配置文件,solver.prototxt 文件是用来告诉 Caffe 如何训练网络的。下面以 Caffe 中的 mnist 实例进行简单明了的解释:

1. net: "examples/mnist/lenet_train_test.prototxt"
2. test_iter: 100
3. test_interval: 500
4. base_lr: 0.01
5. momentum: 0.9
6. weight_decay: 0.0005
7. lr_policy: "inv"
8. gamma: 0.0001
9. power: 0.75
10. display: 100
11. max_iter: 10000
12. snapshot: 5000
13. snapshot_prefix: "examples/mnist/lenet" 
14. solver_mode: GPU
第1行:
net: "examples/mnist/lenet_train_test.prototxt"

用于设置深度网络模型,即指定网络配置文件(该实例中为 lenet_train_test.prototxt)的路径。

第2行,第3行以及第11行:
2. test_iter: 100
3. test_interval: 500
11. max_iter: 10000

test_iter 的大小为 test 数据集的总样本数与 batch_size 的比值,比如在 mnist 数据集中,有10000个测试样本,batch_size设为100的话,则 test_iter = 10000/100 = 100;

test_interval 表示测试间隔,例如,想要完成一次完整的 train 再测试,则 test_interval 的值为 50000/100 = 500,其中,50000为训练集数量,100为 batch_size 的大小;

max_iter 表示最大训练迭代次数,若 test_interval 测试间隔设为一次完整的 train,则 max_iter = test_interval * epoch,其中,epoch为训练的轮次。

第4——9行
4. base_lr: 0.01
5. momentum: 0.9
6. weight_decay: 0.0005
7. lr_policy: "inv"
8. gamma: 0.0001
9. power: 0.75

base_lr 用来表示网络的初始学习率;
momentum 表示动量大小,在新的计算中要保留的前面的权重数量,通常设置为0.9;
weight_decay 表示对较大权重的惩罚(正则化)因子,防止过拟合的一个参数;
lr_policy 表示训练过程中学习率的变化方式,有如下几种:

  • 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))))

以为此处设置为 “inv”,所以需要设置 gamma 和 power 值。

第10行
10. display: 100

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

第12,13行
12. snapshot: 5000
13. snapshot_prefix: "examples/mnist/lenet"

将训练出来的 model 和 solver 状态进行保存,snapshot 用于设置训练多少次后进行保存,默认为0,不保存。snapshot_prefix 为设置保存路径。也可以设置 snapshot_format,保存的类型。有两种选择:HDF5 和 BINARYPROTO ,默认为 BINARYPROTO。

第14行
14. solver_mode: GPU

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

发布了225 篇原创文章 · 获赞 648 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/huangfei711/article/details/80720070
今日推荐