Solver文件

caffe程序在运行前需要首先写solver配置文件,solver的主要作用就是交替调用前向(forword)算法和后向(backword)算法来更新参数,是一种迭代的优化算法。
目前caffe中优化算法有:
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”)
6.RMSprop (type: “RMSProp”)
在编写Solver文件时,通过设置type类型来选择。
例程minst的Solver文件如下:

# The train/test net protocol buffer definition
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.
test_iter: 100
# Carry out testing every 500 training iterations.
test_interval: 500
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# The learning rate policy
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# Display every 100 iterations
display: 100
# The maximum number of iterations
max_iter: 10000
# snapshot intermediate results
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
# solver mode: CPU or GPU
solver_mode: GPU

对其每一步的理解为:

net: "examples/mnist/lenet_train_test.prototxt"

这一步主要为说明对哪个网络需要优化,其网络结构在代码目录中的配置文件proto中。

test_iter: 100

在minst例程中,测试数据为10000,而我们设置每个批次(batch size)的数量为100,故总共需要迭代100次才能够运行完总测试数据。故其为迭代的次数,与batch size一起理解。

test_interval: 500

测试间隔,每训练多少次需要测试一次。

base_lr: 0.01

初始化学习速率。

momentum: 0.9

上一次梯度更新的权值,一般取值在0.5-0.99之间,通常设为0.9,可以让使用SGD的深度学习方法更加稳定以及快速。

weight_decay: 0.0005

损失函数中参数的正则化系数(权重衰减项),防止过拟合(过度复杂)的一个参数。

lr_policy: "inv"
gamma: 0.0001
power: 0.75

lr_policy为学习率在base_lr基础上变化的策略,目前有:

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

display: 100

每测试100次显示一次。

max_iter: 10000

总共迭代的次数即总测试数据。

snapshot: 5000

快照,用于设置训练多少次后进行保存。

snapshot_prefix: "examples/mnist/lenet"

设置保存的路径。

solver_mode: GPU

设置选择GPU还是CPU进行计算。

snapshot_diff

是否保存梯度值,默认为false。

snapshot_format: 0

保存的类型。

debug_info: 0

打印调试的信息。

regularization_type: "L2"

规则化类型支持,与weight_decay一起对损失函数进行约束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值