caffe参数理解

来源:互联网 发布:java网店系统 编辑:程序博客网 时间:2024/04/29 18:31

solver.prototxt

net: "vggface_mycmd/vggface_train_test.prototxt" test_iter: 365 test_interval: 500  iter_size: 4test_initialization: false display: 40  verage_loss: 40 base_lr: 0.00005 lr_policy: "step" stepsize: 2000 gamma: 0.96 max_iter: 10000 momentum: 0.9  weight_decay: 0.0002 snapshot: 20 snapshot_prefix: "vggface_mycmd/mymodel" solver_mode: CPU 

首先说明一个概念:在caffe中的一次迭代iterration指的是一个batch,而不是一张图片。

test_iter: 在测试的时候,需要迭代的次数,即test_iter* batchsize(测试集的)=测试集的大小,测试集batchsize可以在prototx文件里设置


test_interval:interval是区间的意思,所有该参数表示:训练的时候,每迭代500次就进行一次测试。


caffe在训练的过程是边训练边测试的。训练过程中每500次迭代(也就是32000个训练样本参与了计算,batchsize为64),计算一次测试误差。计算一次测试误差就需要包含所有的测试图片(这里为10000),这样可以认为在一个epoch里,训练集中的所有样本都遍历以一遍,但测试集的所有样本至少要遍历一次,至于具体要多少次,也许不是整数次,这就要看max iter。


iter_size:iter_size*train batch size=实际的batch size,为什么这么说。深度学习为了加快运算速度将数据分成小的batch,但是参与batch太小,代价函数进行权重衰减太快,加上iter size之后,取iter size次的平均在进行权重衰减,比较具有代表性。注意的是,我觉得iter size的加入并不会影响前面两个参数与batch size的关系。


lr policy:是指权重衰减的规律,有几种,百度一下就知道了,这个的不同大概不怎么影响最终的准确度,可能会影响收敛速度


lr base:开始时候的学习速率,会在此基础上进行衰减,注意train net中的lr mult*lr base 代表那一层的实际学习速率。在旧版net参数中lr mult写作blobs lr 


0 0
原创粉丝点击