【问题标题】:How to automatically judge whether the training process of the deep learning model is converged?如何自动判断深度学习模型的训练过程是否收敛?
【发布时间】:2021-10-12 21:19:36
【问题描述】:

在训练深度学习模型的时候,我得看损失曲线和性能曲线来判断深度学习模型的训练过程是否收敛。

这花费了我很多时间。有时,肉眼判断的收敛时间并不准确。

所以想知道有没有算法或者包可以自动判断深度学习模型的训练过程是否收敛。

谁能帮帮我?

非常感谢。

【问题讨论】:

    标签: tensorflow deep-learning pytorch


    【解决方案1】:

    冒着让你失望的风险,我相信没有这样的通用算法。根据我的经验,这取决于您想要达到什么目标、哪些指标对您很重要以及您愿意让培训持续多长时间。

    • 我已经看到验证损失急剧上升(过度拟合的迹象),而其他指标(在本例中为 mIoU)仍在验证集上得到改进。在这些情况下,您需要知道您的目标是什么。

    • 有可能(尽管这种情况非常罕见)您的损失会在很长一段时间内上升,然后再次下降并达到比以前更好的水平。没有办法预料到这一点。

    • 最后,如果您有大量训练数据,这可以说是一种常见情况,您的验证损失可能会不断下降,但速度会越来越慢。在这种情况下,如果你有无限的时间,最好的策略就是让它无限期地继续训练。在实践中,这是不可能的,您需要在性能和训练时间之间找到适当的平衡点。

    如果你真的需要一种算法,我会推荐这个非常简单的算法:

    1. 在验证集的固定子集或整个验证集的每个 ith epoch 之后计算验证指标 M(i)。假设M(i)is 越高越好。根据一个训练时期的持续时间修复 k 一个整数(k~3 应该可以解决问题)
    2. 如果对于某些n,您拥有M(n) > max(M(n+1), ..., M(n+k)),请停止并保留您在纪元n 拥有的网络。

    它远非完美,但对于简单的任务来说应该足够了。

    [编辑] 如果您还没有使用它,我邀请您使用 TensorBoard 来可视化您的指标在整个培训过程中的演变。一旦设置好,就可以节省大量时间。

    【讨论】:

      猜你喜欢
      • 2019-11-30
      • 2020-11-10
      • 2019-09-25
      • 2021-05-05
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      相关资源
      最近更新 更多