solver.prototxt 配置文件训练

reference:https://blog.csdn.net/qq_27923041/article/details/55211808          https://www.cnblogs.com/Allen-rg/p/5795867.html

1. ####训练样本###

总共:121368个
batch_szie:256
将所有样本处理完一次(称为一代,即epoch)需要:121368/256=475 次迭代才能完成
所以这里将test_interval设置为475,即处理完一次所有的训练数据后,才去进行测试。所以这个数要大于等于475.
如果想训练100代,则最大迭代次数为47500;



2. ####测试样本###
同理,如果有1000个测试样本,batch_size为25,那么需要40次才能完整的测试一次。 所以test_iter为40;这个数要大于等于40.

3. ####学习率###
学习率变化规律我们设置为随着迭代次数的增加,慢慢变低。总共迭代47500次,我们将变化5次,所以stepsize设置为47500/5=9500,即每迭代9500次,我们就降低一次学习率。

 

####参数含义#############

net: "examples/AAA/train_val.prototxt"   #训练或者测试配置文件
test_interval: 475  #测试间隔
base_lr: 0.01  #基础学习率
lr_policy: "step"  #学习率变化规律
gamma: 0.1  #学习率变化指数
stepsize: 9500  #学习率变化频率
display: 20  #屏幕显示间隔
max_iter: 47500 #最大迭代次数
momentum: 0.9 #动量
weight_decay: 0.0005 #权重衰减
snapshot: 5000 #保存模型间隔
snapshot_prefix: "models/A1/caffenet_train" #保存模型的前缀
solver_mode: GPU #是否使用GPU

 

stepsize不能太小,如果太小会导致学习率再后来越来越小,达不到充分收敛的效果。

 

1:     net: "examples/AAA/train_val.prototxt"

设置深度网络模型。每一个模型就是一个net,需要在一个专门的配置文件中对net进行配置,每个net由许多的layer所组成。上面这句代码就是设置训练网络的,网络模型文件配置,即examples/myfile/文件下的train_val.prototxt里面的配置。                      

2: test_iter: 40   #完成一次测试需要的迭代次数

这个要与train layer 中的batch_size结合起来理解。训练数据中测试样本总数为400,一次性执行全部数据的效率太低,因此我将测试数据分成几个批次来执行,每个批次的数量就是batch_size。

本文,我将batch_size设置为40,则需要迭代10次才能将400个数据全部执行完。因此test_iter设置为10.执行完一次全部数据,称之为一个epoch.

3: test_interval:475

测试间隔。也就是每训练475次,才进行一次测试。

4: base_lr: 0.01  #基础学习率
lr_policy: "step"  #学习率变化规律
gamma: 0.1  #学习率变化指数
stepsize: 9500  #学习率变化频率

5: display: 20 

mei训练20次,在屏幕显示一次。如果设置为0,则不显示。

6: max_iter: 47500 #最大迭代次数

最大迭代次数。这个参数设置太小,会导致没有收敛,精确度很低。设置太大,会导致震荡,浪费时间。

7: momentum: 0.9 #动量

上一次梯度更新的权重。

8:     weight_decay: 0.0005 #权重衰减

权重衰减项,防止过拟合的一个参数。

9: snapshot: 5000 #保存模型间隔

snapshot_prefix: "models/A1/caffenet_train" #保存模型的前缀

快照。将训练出来的model和solver状态进行保存,snapshot用于设置训练多少次后进行保存,默认为0,不保存。snapshot_prefix:设置保存路径。

还可以设置snapshot_diff,是否保存梯度值,默认为false,不保存。

 

也可以设置snapshot_format,保存的类型。有两种选择:HDF5和BINARYPROTO,默认为BINARYPROTO

10: solver_mode: GPU #是否使用GPU

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

注意:以上的所有参数均为可选参数,都有默认值,根据solver(type)方法的不同,还有一些其他的参数,大家根据自己的需要自己设置。

 

posted @ 2021-01-19 17:09  夜下青灯  阅读(87)  评论(0编辑  收藏  举报