咖啡 | solver.prototxt 价值观设定策略

Caffe | solver.prototxt values setting strategy

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

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

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

1.训练集大小 你拥有的训练样本总数,我们称这个数量为T.
2。 Training batch size 在一个batch中一起处理的训练样例的数量,这通常由'train_val.prototxt'中的输入数据层设置。例如,在 this file 中,训练批量大小设置为 256。让我们用 tb.
表示这个数量 3。验证集大小 您为验证模型留出的示例总数,我们用 V.
表示 4。在 batch_size 中为测试阶段设置的验证批量大小 值。在 this example 中,它被设置为 50。我们称其为 vb

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

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

关于 iter_size:这允许在多个训练小批量上平均梯度,请参阅 了解更多信息。