Caffe | solver.prototxt值设置策略

Abh*_*ahi 13 machine-learning neural-network deep-learning caffe conv-neural-network

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

  • test_iter
  • test_interval
  • iter_size
  • max_iter

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

Sha*_*hai 30

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

1.训练集大小你训练样本的总数,让我们称这个数量T.
2.训练批量大小一起处理的训练样本数量,这通常由输入数据层设置'train_val.prototxt'.例如,在此文件中,列车批量大小设置为256.让我们用来表示此数量tb.
3.验证设置大小为验证模型而预留的示例总数,让我们用来表示V.
4.batch_size为TEST阶段设置的验证批量大小值.在这个例子中它设置为50.让我们称之为vb.

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

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

关于iter_size:这允许在几个训练迷你批次上平均渐变,请参阅此主题获取更多信息.

  • 非常感谢!它清除了很多东西:) (2认同)