python - 为什么卷积神经网络训练过程中损失会飙升?
问题描述
我正在 Pytorch 中训练一个简单的 CNN,用于在一个非常小的数据集上进行分割(只有几张图像,因为这只是为了概念验证)。出于某种原因,在训练期间损失猛增至高达 6 并且 IoU 在恢复之前随机下降至 0(与联合准确度指标的交集)。我想知道为什么会发生这种情况?
解决方案
不稳定。这实际上很常见。看看已发表的论文,你也会看到同样的事情。在梯度下降期间,梯度景观中可能存在“粗糙的补丁”,并给出局部错误的解决方案,因此损失很高。
话虽如此,其中一些峰值实际上可能表明您选择了糟糕的超参数和网络架构。根据我的经验,尖峰的可能原因之一是使用了重量衰减。权重衰减提供了正则化,但在我自己的工作中,我发现它会导致很多不稳定性。所以现在,我不再使用它了。
您图表中的尖峰看起来还不错,我不会担心。
推荐阅读
- sql - 按 somecolumn 分组以获得总值并按 somecolumn 以相反的顺序对值求和
- java - 通过记录器的 Java Spark 应用程序日志未显示在 EMR 日志中
- javascript - 为什么我的 JavaScript 数据库表是空的?
- c# - 如何通过在移动设备上触摸来更改对象属性 (UNITY) (2D)
- ios - 如何使用 AVFoundation (>1 min) 录制长视频?
- .net - 只知道错误地址时如何查找源代码
- docker - 如何使用存储在卷中的文件创建新容器
- javascript - 将 JavaScript 变量注入 JSON 文件 (Node.js)
- javascript - 重定向到某个页面然后执行一个事件或动作
- python - 如何在 python 中使用 for 循环创建多个数据框