【问题标题】:Tensorflow: When to stop training due to the best (minimum) cost?Tensorflow:由于最佳(最低)成本,何时停止训练?
【发布时间】:2017-06-20 03:36:02
【问题描述】:

我正在使用 TensorFlow 使用 LeNet 网络对图像进行分类。我使用 AdamOptimizer 来最小化成本函数。当我开始训练模型时,我可以观察到训练准确率和验证准确率以及成本都在变化,有时会降低有时会增加。

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

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

这是一个正确的方法吗?

提前致谢,

【问题讨论】:

    标签: tensorflow neural-network


    【解决方案1】:

    在训练神经网络时,通常会定义目标误差以及要训练的最大迭代次数。例如,目标错误可能是0.001MSE。一旦达到此错误,训练将停止 - 如果在最大迭代次数后仍未达到此错误,则训练也将停止。

    但您似乎想要训练,直到您知道网络无法做得更好为止。像您正在做的那样保存“最佳”参数是一种很好的方法,但要意识到一旦达到某种最低成本,错误就不会再波动那么大了。不会像错误突然显着上升,所以也不是完全需要拯救网络。

    没有所谓的“最小成本”——网络总是试图达到某个局部最小值,而且它总是会这样做。您(或算法)实际上无法确定不再有更好的错误。

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

    【讨论】:

    • 所以,在第一段中,您说我需要训练模型进行大量迭代,它会在某个点收敛,对吧?
    • 好吧,你必须设置一个合理的错误目标——迭代次数应该是你知道网络应该收敛到最小值的数量。最大迭代次数是目标错误的后备。
    • 因此,我应该通过试错法找到最大迭代次数和目标误差?
    • 基本上是的,但我必须注意您的第一条评论是正确的:将最大迭代次数设置为高值意味着网络将尽可能收敛,因为错误不会上升或者在高分之后做显着的爱。迭代次数。
    猜你喜欢
    • 2018-07-05
    • 1970-01-01
    • 2020-02-09
    • 2016-10-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多