Caffe | solver.prototxt值设置策略

时间:2015-11-18 13:01:22

标签: machine-learning neural-network deep-learning caffe conv-neural-network

在Caffe上,我正在尝试实现一个用于语义分割的完全卷积网络。我想知道是否有针对以下超参数设置'solver.prototxt'值的具体策略:

  • test_iter
  • test_interval
  • iter_size
  • max_iter

是否取决于训练集的图像数量?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:29)

为了以有意义的方式设置这些值,您需要有关于数据的更多信息:

<强> 1。培训设置大小您拥有的培训示例总数,请拨打此数量T
2。培训批量大小在一个批处理中一起处理的培训示例的数量,这通常由'train_val.prototxt'中的输入数据层设置。例如,在this file中,列车批量大小设置为256.我们用tb表示此数量。
第3。验证设置大小您为验证模型而预留的示例总数,让我们通过V表示这一点。
4。验证批量大小值在batch_size中为TEST阶段设置。在this example中,它设置为50.我们称之为vb

现在,在培训期间,您希望每隔一段时间对网络的性能进行无偏见的估计。为此,您需要在test_iter次迭代的验证集上运行您的网络。要覆盖整个验证集,您需要test_iter = V/vb 你多久想得到这个估计?它真的取决于你。如果您拥有非常大的验证集和缓慢的网络,过于频繁的验证会使培训过程过长。另一方面,不经常验证可能会阻止您注意您的培训过程是否以及何时未能收敛。 test_interval确定您验证的频率:通常对于大型网络,您将test_interval设置为5K,对于较小和较快的网络,您可以选择较低的值。一切都取决于你。

为了覆盖整个训练集(完成&#34; epoch&#34;),您需要运行T/tb次迭代。通常一个人训练几个时期,因此max_iter=#epochs*T/tb

关于iter_size:这允许对几个训练小批量的平均值进行平均,有关详细信息,请参阅this thread