solver参数说明

# The train/test net protocol buffer definition 

net:"examples/mnist/lenet_train_test.prototxt"        //网络协议具体定义 

# test_iter specifies how many forward passes the testshould carry out. 

# In the case of MNIST, we have test batch size 100and 100 test iterations, 

//batch_size就是你的网络一次正向传播处理的输入样本数量,

//test_iter就是当在TEST阶段时,要进行多少次迭代,即进行test_iter次正向传播

//当在TEST阶段时,会进行test_iter次迭代,每次迭代都是batch_size个输入样本

//所以总共会处理test_iter * batch_size个样本。

//在测试时,应该保证batch_size*test_iter>=测试图片数,

//比如:2w测试图片,迭代次数为50时,batch_size等于1就意味着只处理了50张图片

//比如,test_iter为 100,batch_size =100,则100张图一批,训练100次,

//这样一共覆盖了10000张图

# covering the full 10,000 testing images. 

test_iter: 100       //test迭代次数     

 

# Carry out testing every 500 trainingiterations.   

//训练迭代500次,测试一次 ,即每迭代500次测试一次,输出一次精度和LOSS  

test_interval: 500           //训练迭代500次,测试一次 

# The base learning rate, momentum and the weightdecay of the network. //网络参数:学习率,动量,权重的衰减 

base_lr: 0.01

//随机梯度下降(SGD)是按batch来进行更新,通常来说下降速度比较快,就容易震荡。

//引入momentum,就是在更新下降方向的时候不仅要考虑到当前的方向,也要考虑到上一次的更新方向,两者加权,

//某些情况下可以避免震荡。momentum(冲量),就是上一次更新方向所占的权值。

//一个小的trick是,当刚开始训练的时候,把冲量设小,或者直接就置为0,然后慢慢增大冲量,有时候效果比较好。

momentum: 0.9 

//神经网络权值越大往往overfitting的程度越高,为了避免出现overfitting,会给误差函数添加一个惩罚项

//常用的惩罚项是所有权重的平方乘以一个衰减常量之和。


//右边项即用来惩罚大权值。权值衰减惩罚项使得权值收敛到较小的绝对值,而惩罚大的权值。从而避免overfitting的出现。

weight_decay: 0.0005 

# The learning rate policy       //学习策略:有固定学习率和每步递减学习率

只要是梯度下降法来求解优化,都会有一个学习率,也叫步长。base_lr用于设置基础学习率,在迭代的过程中,可以对基础学习率进行调整。怎么样进行调整,就是调整的策略,由lr_policy来设置。

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

lr_policy: "inv"

gamma: 0.0001 

power: 0.75 


# Display every 100 iterations      //每迭代100次显示一次  

display: 100 

# The maximum number of iterations   //最大迭代次数 

max_iter: 10000 

# snapshot intermediate results   

// 每5000次迭代存储一次数据,路径前缀是<</span>spanstyle="font-family: Arial, Helvetica,sans-serif;">examples/mnist/lenet</</span>span> 

snapshot: 5000 

snapshot_prefix: "examples/mnist/lenet" 

solver_mode: CPU //设置模式CPU或者GPU  

猜你喜欢

转载自blog.csdn.net/nongfu_spring/article/details/51513782