【发布时间】:2019-04-11 23:30:46
【问题描述】:
我正在训练一个 CNN 来定位图像上的点,我获得了一条振荡的验证曲线,并获得了 90% 的训练分数和 20% 的测试分数……为什么?
我尝试使用 keras 进行正则化、dropout、earlystopping 和模型检查点,但这些解决方案都不起作用
【问题讨论】:
标签: python machine-learning deep-learning computer-vision
我正在训练一个 CNN 来定位图像上的点,我获得了一条振荡的验证曲线,并获得了 90% 的训练分数和 20% 的测试分数……为什么?
我尝试使用 keras 进行正则化、dropout、earlystopping 和模型检查点,但这些解决方案都不起作用
【问题讨论】:
标签: python machine-learning deep-learning computer-vision
有很多因素会影响这个过程。正如您已经提到的一些您尝试过的事情。您可以尝试更改初始化权重的方式。其他因素可能是学习率、正则化因素、您正在使用的优化器类型。
尝试使用学习率和正则化的不同组合并绘制损失函数。观察损失函数可能真的很有帮助。
归根结底,结果大多是经验性的,很大程度上取决于您的数据集以及您如何划分它。确保您随机选择了训练集,而不是最初或最后 70% 的数据。另外,我建议您有一个验证集(如果这就是您所说的检查点,我不是)。
我经历过你所说的,这可能是因为你的代码中的一个愚蠢的错误,也可能是因为你划分数据库的方式。不幸的是,这个问题没有具体的答案。
【讨论】: