我有两个网络。 D->C1,R1->P1->C2,R2->loss and D->C1,R1,C2,R2->P1->C3,R3->loss
。
D是数据,C是Conv,R是Relu,P是Pool。
我从头开始训练第一个网络,由于两个网络只有C2,R2层不同,所以我使用了第一个网络的所有权重,仅训练了C2。 C1和C3设置为lr_mult = 0,因此它们的权重不会更新。
我的询问是如何知道C2具有最佳的重量来停止训练。
说网络1在5个周期后的mAP = 0.85。当我训练网络2时,在1个时间段之后,它的mAP = 0.86。
在这种情况下我什么时候应该停止训练?
答案 0 :(得分:1)
不幸的是,神经网络优化通常是is non-convex,因此无法知道特定的局部最小值是否是全局最小值[*]具有预先训练的权重的事实并不特别相关[**] 。 solver has an effect
的类型也就是说,有些标准偶尔会启发式地使用。重要的是:use a testing set, not a training set用于评估(然后在检查性能时使用单独的验证集)。
这里是slightly older survey,尽管结果往往总是凭经验得出的
此外,Goodfellow提出以下重要建议,以确保无论您使用何种标准,参数都应尽可能最佳:
每次验证集的错误改善时,我们都会存储一个副本 模型参数。当训练算法终止时,我们 返回这些参数,而不是最新参数。的 当没有参数达到最佳状态时,算法终止 记录了某些预定迭代次数的验证错误
[*]还有其他条件(e.g)可能会提供此信息,但都不适用
[**]我不知道有这种或另一种方式的研究,但我怀疑这实际上会使问题更困难,因为您是从一个漂亮的家伙开始的良好的局部最小值,可能很难爬出来
[***]这与使用交叉验证来测量测试集或模型选择的准确性不同,请参阅here