何时停止CNN学习

时间:2016-09-29 12:20:06

标签: neural-network tensorflow conv-neural-network

在tensorflow中,我曾经在固定数量的纪元上执行cnn学习,并在指定的纪元间隔数之后保存检查点。为了评估模型,恢复检查点并对验证数据集执行预测。

我希望自动化学习过程,而不是使用固定的纪元。请解释如何利用迷你批次的损失值来确定停止点?还请帮助我实现张量流中的学习率衰减。哪个是更好的恒定衰减或指数以及如何确定衰减因子?

1 个答案:

答案 0 :(得分:1)

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

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

其次对于衰减因子,当你感觉到损失已经停止改善并且认为你处于局部最小值并且在没有实际进入的情况下进出井内时(这个隐喻仅在你有2个维度时有效)但我发现它仍然有用。

几乎每次在文学中完成它看起来都非常手工制作:就像你训练200个时代一样,你看到它达到了一个高原,所以你用一个阶梯函数减少你的lr(参数阶梯= TF中的真)再说一次。

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

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

对日程安排有什么帮助,你使用的值是交叉验证,但通常你只需看看你的损失并手工完成。

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