何时停止 CNN 学习
When to stop CNN learning
在tensorflow中,我曾经对固定数量的epochs执行cnn学习,并在指定数量的epochs间隔后保存检查点。为了评估模型,检查点被恢复并对验证数据集进行预测。
我想自动化学习过程,而不是使用固定的时期。请解释如何使用小批量的损失值来确定停止点?也请帮助我在 tensorflow 中实现学习率衰减。常数衰减和指数衰减哪个更好?如何确定衰减因子?
首先对于迭代次数,如果你的损失在批次上停止改善,即如果两个损失值之间的差异跨批次平均(以减少批次波动)小于确定的阈值,你可以退出训练。
但您可能意识到阈值也是一个超参数!
事实上,有很多尝试完全自动化机器学习,但无论你做什么,你最终都会得到一些超参数。
其次,对于衰减因子,当您感觉损失已停止改善并认为您处于局部最小值并且在没有实际进入的情况下在井中进出振荡时使用它(这个比喻仅在您有2 维,但我发现它仍然有用)。
几乎每次在文献中完成它看起来都是手工制作的:就像你训练 200 个时期一样,你会看到它达到了一个平台,所以你用一个阶梯函数降低了你的 lr(参数 stairstair=True in TF ) 然后又一次。
常用的是学习率除以10(指数衰减)但是和以前一样很随意!
关于如何在TF中实现学习率衰减的详细信息,您可以在中查看dga的回答。
非常简单!
交叉验证对时间表和您使用的值有帮助,但通常您可以简单地查看损失并手动完成。
深度学习中没有灵丹妙药,它只是反复试验。
在tensorflow中,我曾经对固定数量的epochs执行cnn学习,并在指定数量的epochs间隔后保存检查点。为了评估模型,检查点被恢复并对验证数据集进行预测。
我想自动化学习过程,而不是使用固定的时期。请解释如何使用小批量的损失值来确定停止点?也请帮助我在 tensorflow 中实现学习率衰减。常数衰减和指数衰减哪个更好?如何确定衰减因子?
首先对于迭代次数,如果你的损失在批次上停止改善,即如果两个损失值之间的差异跨批次平均(以减少批次波动)小于确定的阈值,你可以退出训练。
但您可能意识到阈值也是一个超参数! 事实上,有很多尝试完全自动化机器学习,但无论你做什么,你最终都会得到一些超参数。
其次,对于衰减因子,当您感觉损失已停止改善并认为您处于局部最小值并且在没有实际进入的情况下在井中进出振荡时使用它(这个比喻仅在您有2 维,但我发现它仍然有用)。
几乎每次在文献中完成它看起来都是手工制作的:就像你训练 200 个时期一样,你会看到它达到了一个平台,所以你用一个阶梯函数降低了你的 lr(参数 stairstair=True in TF ) 然后又一次。
常用的是学习率除以10(指数衰减)但是和以前一样很随意!
关于如何在TF中实现学习率衰减的详细信息,您可以在
交叉验证对时间表和您使用的值有帮助,但通常您可以简单地查看损失并手动完成。
深度学习中没有灵丹妙药,它只是反复试验。