python - 我过拟合了吗?
问题描述
你好!我目前正在使用 Darkflow Yolov2 训练我的模型。优化器是具有 lr 0.001 的 SGD。根据这张图,我的 val loss > train loss,这是否意味着它是过拟合的?如果是,推荐的行动方案是什么?这看起来很奇怪,因为两个损失都在减少,但 val 损失更慢。
有关更多信息,我的火车数据集由每个类 400 个图像组成,带有单个注释,总共 2800 个图像。我这样做是为了防止类不平衡,每张图像只注释一个类实例。我的 val 数据集包含 350 张图像,带有多个注释。基本上,我注释了图像中的每个对象。我有 7 个班级,我的 train-val-test 拆分为 80-10-10。这是 val 损失的原因吗?
解决方案
过拟合检测包括不匹配,因为训练精度与测试(验证)精度不同。由于您尚未提供该数据,我们无法评估您的模型。
这可能有助于澄清阶段和条款;这应该让您将来自己回答这个问题:
“收敛”是训练中我们相信模型的点
- 学到了有用的东西;
- 通过可重现的过程达到了这一点;
- 不会明显好转;
- 即将变得更糟。
收敛是我们想要停止训练并保存(检查点)模型以供生产使用的地方。
我们通过使用训练通过和测试(验证)通过来检测收敛。在收敛时,我们期望:
- 验证损失(误差函数、困惑度等)处于相对最小值;
- 验证准确度处于相对最大值;
- 就模型的一般行为而言,验证和训练指标“相当稳定”;
- 训练准确率和验证准确率基本相等。
一旦训练运行通过了这一点,它通常会转变为“过度拟合”,在这种情况下,模型会学习特定于训练数据的东西,以至于它不再擅长推断新的观察结果。在这种状态下,
- 训练损失下降;验证损失增加;
- 训练准确率提高;验证准确率下降。
推荐阅读
- html - 导航栏不会居中,我错过了什么吗?
- c++ - 在 Chromebook 上运行 Linux vm 时,我需要做什么来编译和运行 C++ 程序?
- python - 如果熊猫列中只有单词,如何在熊猫数据框中删除一行
- websocket - 由于缺少 Keep-Alive 标头,Socket.io 在 HTTP 2 上永久断开连接
- php - 即使使用准备好的语句,PDO 查询也会因某些输入而崩溃
- python-3.x - Groupby().transform() 熊猫
- python - 在 Python 中使用带有已定义类方法的列表
- python - 重命名数据帧索引中的值,然后 sort_index() 对重命名前的值抛出错误
- azure - 无法使用 Web API 门户上传视频,未经授权的 401 错误 Azure 视频索引器
- nginx - 如何使用 Nginx 在本地 Ubuntu 上使用自定义 DNS?