2016-09-29 180 views
0

在tensorflow中,我用来执行固定数量的epochs的cnn学习,并在指定的时间间隔之后保存检查点。为了评估模型,检查点被恢复并对验证数据集执行预测。什么时候停止CNN学习

我想自动化学习过程,而不是使用固定的时期。请解释如何利用小批量的损失值来确定停靠点?请帮助我实现tensorflow中的学习速率衰减。哪个更好的恒定衰减或指数以及如何确定衰减因子?

回答

2

首先,如果您的损失在批次上停止改进,即如果批次间两个损失值AVERAGED之间的差异(以减少批次波动)小于确定的阈值,您可以退出训练。

但是您可能已经意识到该阈值也是一个超参数!实际上,有很多尝试将ML完全自动化,但不管你做什么,你仍然会得到一些超参数。

其次,对于衰减因子,当您感觉到损失已经停止改善并且认为您处于局部极小值并且没有真正进入的情况下进出井内时会使用衰减因子(此metaphore仅在您有2尺寸,但我发现它仍然有用)。

几乎每一次在文学中它都看起来很手工制作:就像你训练200个纪元一样,你会发现它达到了一个高原,所以你用一个阶梯函数减少了你的lr(TF中的参数staircase = True)然后再一次。

通常使用的是将学习率除以10(指数衰减),但像之前一样非常随意!

有关如何在TF中实现学习率衰减的详细信息,请参阅this SO question中的dga答案。 这很简单!

什么可以帮助你的时间表和你使用的值是交叉验证,但通常你可以简单地看看你的损失,并用手去做。

在深度学习中没有银弹,它只是试验和错误。

+0

如果你认为它解决了你的问题,你可以接受它,如果它只有帮助你可以upvote它。 – jean

+0

吉恩,除了损失函数外,你能否建议其他在cnn学习中有用的停止标准?我看到了类似培训和验证准确性之间的差距。 –

+0

你也有我会说最重要的停止标准,这是一旦你的验证损失停止下降,甚至开始上升,这是一个严重的过度配合的迹象,因此你应该绝对停止训练。 – jean