我使用TensorFlow对图像进行LeNet网络分类。我使用AdamOptimizer来最小化成本函数。当我开始训练模型时,我可以观察到训练的准确性和验证的准确性以及成本都在变化,有时会减少,有时会增加。
我的问题:我们什么时候应该停止训练?我们如何知道优化器会找到最小的成本?我们应该进行多少次迭代训练?我们可以设置一个变量或条件来以最小的成本停止吗?
我的解决方案是定义一个全局变量( min_cost ),并在每次迭代中检查成本是否在降低,然后保存会话并用新的成本替换min_cost。最后,我将以最低的成本保存会话,
这方法正确吗?
提前谢谢你,
发布于 2017-06-19 19:36:02
在训练神经网络的同时,主要定义了一个目标误差,并给出了训练的最大迭代次数。因此,例如,目标错误可能是0.001MSE。一旦达到此错误,培训将停止--如果在最大迭代量之后未达到此错误,则培训也将停止。
但似乎你想训练,直到你知道网络不能做得更好。像你这样保存“最好的”参数是一种很好的方法,但是要意识到,一旦达到某种最小的成本,误差就不会有那么大的波动。它不会像错误突然大幅上升,所以它不是完全有必要拯救网络。
没有“最小成本”这样的东西--网络总是试图达到局部的最小值,而且它将一直这样做。没有真正的方法(或算法)可以找出没有更好的错误可以到达。
tl;dr --只要在最大迭代量的同时设置一个目标合理的目标错误即可。
https://stackoverflow.com/questions/44638033
复制相似问题