2017-06-19 314 views
1

我正在使用TensorFlow分类使用LeNet网络的图像。我使用AdamOptimizer来最小化成本函数。当我开始训练模型时,我可以观察到训练准确性和验证准确性以及成本正在发生变化,有时会减少,有时会增加。Tensorflow:何时停止由于最佳(最低)成本而进行的培训?

我的问题:我们应该什么时候停止培训?我们如何知道优化器会找到最低成本?我们应该做多少次迭代训练?我们可以设置一个变量或条件以最低的成本停止吗?

我的解决方案是定义一个全局变量(min_cost),并在每次迭代中检查成本是否降低,然后保存会话并用新成本替换min_cost。最后,我将以最低的费用获得保存的会话,

这是一个正确的方法吗?

由于提前,

回答

1

虽然训练神经网络,主要是一个目标误差一起与迭代训练的最大量限定。例如,目标错误可能是0.001MSE。一旦达到这个错误,训练就会停止 - 如果在最大迭代次数后还没有达到这个错误,训练也会停止。

但似乎你想训练,直到你知道网络不能做得更好。像您所做的那样保存“最佳”参数是一种很好的方法,但要意识到,一旦达到了某种最低成本,误差就不会再有这么大的波动。它不会像错误突然显着上升,所以并不是完全有必要保存网络。

没有“最低成本”这样的东西 - 网络总是试图去一些当地的最低标准,它会一直这样做。你(或算法)没有办法确定没有更好的错误可以达成。

tl; dr - 只需设置一个目标合理的目标误差以及最大的迭代次数。

+0

所以,在第一段中,你说我需要训练模型以进行非常多的迭代,它会在某个点收敛,对吗? – Mohammad

+0

好的,你必须设定一个合理的错误目标 - 迭代次数应该是你知道网络应该收敛到最小值的一个数量。最大迭代是目标错误的回退。 –

+0

因此,我应该通过试错法找到最大迭代和目标错误? – Mohammad

相关问题