【问题标题】:How we know when to stop training a model on a pre-trained model?我们如何知道何时停止在预训练模型上训练模型?
【发布时间】:2017-01-15 03:52:19
【问题描述】:

我很抱歉,因为我的问题可能听起来很愚蠢。但我在深度学习和 caffe 方面还很陌生。 我们如何检测在我们自己的数据集上微调预训练需要多少次迭代?例如,我正在为我自己的数据运行 fcn32,其中包含 5 个类。什么时候可以通过查看训练阶段的损失和准确率来停止微调过程?

非常感谢

【问题讨论】:

    标签: deep-learning caffe pycaffe deeplearning4j


    【解决方案1】:

    您不应该通过查看训练阶段的损失或准确性来做到这一点。从理论上讲,训练准确度应该始终在增加(也意味着训练损失应该始终在减少),因为您训练网络以减少训练损失。但训练准确率高并不一定意味着测试准确率高,这就是我们所说的过拟合问题。因此,您需要找到测试集(或验证集,如果有的话)的准确性停止增加的点。您可以通过首先指定相对较大的迭代次数来简单地做到这一点,然后监控测试准确度或测试损失,如果测试准确度在一致的 N 次迭代(或时期)中停止增加(或损失停止减少),其中 N可以是 10 或您指定的其他数字,然后停止训练过程。

    【讨论】:

    • 非常感谢您的 cmets。我已经分开了两组(一组火车和另一组验证)。例如,我在我的数据集上运行 FCN32,并且类数量不平衡。损失和准确度波动`迭代58150,损失= 26238.5训练净输出#0:准确度= 0.796127训练净输出#1:损失= 47338.7迭代58150,lr = 1e-10迭代58200,损失= 70063.6训练净输出#0 :准确度 = 0.592117 训练净输出 #1:损失 = 74425.9`。 58200迭代后这是正常的吗?如何可视化测试阶段的准确性和损失?
    • 我自己从不使用 FCN32。但是您发布的损失似乎是错误的,它太大并且随着迭代而增加。所以你的代码一定有问题。
    【解决方案2】:

    最好的办法是跟踪训练和验证的准确性,并存储每 k 次迭代的权重快照。要计算验证准确度,您需要拥有一组不用于训练的独立数据。 然后,一旦验证准确度停止增加或开始减少,您就可以停止。这在文献中被称为早期停止。例如,Keras 为此提供了功能:https://keras.io/callbacks/#earlystopping

    此外,绘制上述数量是一种很好的做法,因为它可以让您深入了解训练过程。请参阅 http://cs231n.github.io/neural-networks-3/#accuracy 以获得精彩的说明(并非特定于提前停止)。

    希望对你有帮助

    【讨论】:

    • 非常感谢您的帮助。我为 TRAIN 阶段添加了损失层和准确度层。准确率和损失都是波动的。我的训练有问题吗?再次感谢
    【解决方案3】:

    通常,您会收敛到模型的特定验证准确度。在实践中,如果验证损失在 x 个时期内没有增加,您通常会停止训练。根据您的纪元持续时间,x 可能最常见地在 5 到 20 之间变化。

    编辑:

    一个时期是对您的数据集的一次迭代,用于在 ML 术语中进行训练。您似乎没有验证集。通常,数据会分为训练数据和验证数据,因此您可以查看模型在看不见的数据上的执行情况,并通过查看这些数据来决定采用哪个模型。您可能想查看http://caffe.berkeleyvision.org/gathered/examples/mnist.html 以了解验证集的用法,即使他们称其为测试集。

    【讨论】:

    • 感谢您的回复。请告诉我哪一个是验证损失,哪一个是训练损失Iteration 59100, loss = 51478.9 I0116 00:23:45.580317 13755 solver.cpp:244] Train net output #0: accuracy = 0.594269 I0116 00:23:45.580333 13755 solver.cpp:244] Train net output #1: loss = 73335.3 (* 1 = 73335.3 loss)。损失和准确率都有很大的波动。顺便说一句,你能解释一下你的时代是什么意思吗?再次感谢
    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 2023-01-03
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多