Caffe | solver.prototxt值设置策略

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

  • test_iter
  • test_interval
  • iter_size
  • max_iter

这是否取决于你用于训练集的图像数量?如果是,如何依赖?


回答:

为了有意义地设置这些值,你需要了解一些关于数据的额外信息:

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

现在,在训练过程中,你希望不时地获得网络性能的无偏估计。为此,你需要在验证集上运行test_iter次迭代。要覆盖整个验证集,你需要设置test_iter = V/vb
你希望多长时间获得一次这样的估计?这完全取决于你。如果你的验证集非常大且网络运行缓慢,太频繁的验证会使训练过程变得过长。另一方面,不够频繁的验证可能会让你无法注意到训练过程是否以及何时未能收敛。test_interval决定了你验证的频率:通常对于大型网络,你会将test_interval设置为5K的数量级,对于较小且运行较快的网络,你可以选择较低的值。同样,这完全取决于你。

为了覆盖整个训练集(完成一个“epoch”),你需要运行T/tb次迭代。通常人们会训练几个epoch,因此max_iter=#epochs*T/tb

关于iter_size:这允许在多个训练小批次上平均梯度,详见这个讨论

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注