CNN培训中的最佳体重更新[已结束]

问题描述 投票:-1回答:1

我有两个网络。 D->C1,R1->P1->C2,R2->loss and D->C1,R1,C2,R2->P1->C3,R3->loss

D是数据,C代表Conv,R代表Relu,P代表池。

我从头开始训练第一个网络,因为两个网络只有C2,R2层不同,我使用了来自第一个网络的所有权重,只训练了C2。 C1和C3设置为lr_mult = 0.因此不更新它们的权重。

我的询问是如何知道C2具有停止训练的最佳重量。

假设网络1在5个时期之后具有mAP = 0.85。当我训练网络2时,它在1个纪元之后才有mAP = 0.86。

在这种情况下我什么时候应该停止训练?

tensorflow deep-learning conv-neural-network caffe
1个回答
1
投票

不幸的是,一般is non-convex的神经网络优化,所以不可能知道特定的局部最小值是否是全局最小值[*]你有预训练权重的事实并不是特别相关[**]。 solver has an effect的类型

也就是说,有一些标准偶尔用于启发式。重要的是:use a testing set, not a training set用于评估(然后在检查性能时使用单独的验证集)。

  1. 测试集平台上qazxsw poi的变化
  2. 交叉验证[***]
  3. 学习率消失(MSE
  4. 固定次数的迭代

这是一个depends on your solver,虽然结果往往是经验的


此外,slightly older survey提出以下重要建议,无论您的标准如何,都要确保您的参数尽可能最佳:

每次验证集上的错误改进时,我们都会存储模型参数的副本。当训练算法终止时,我们返回这些参数,而不是最新的参数。对于某些预先指定的迭代次数,当没有参数改进了最佳记录的验证错误时,算法终止



Footnotes

[*]还有其他条件(Goodfellow)可能提供此信息,但它们都不适用

[**]我不知道有关于这种或那种方式的研究,但我怀疑它实际上会使问题变得更难,因为你从一个很好的局部最小值开始,可能很难爬出来的

[***]这与使用交叉验证测量测试集或模型选择的准确度不同,请参阅e.g

© www.soinside.com 2019 - 2024. All rights reserved.