我有一个相当小的数据集,每个类有 100 个示例,总共有12 个类。在我尝试过的所有 CNN 模型中,我唯一能做出的推论是我的训练准确率稳定在 97%,但我的验证准确率是 7-8%,这可能是随机的。
那么问题出在哪里?
- 我的数据集太小了吗?
- 我的代码错了吗?(我不是要任何代码建议,只是一个概念性问题)
- 别的东西
我有一个相当小的数据集,每个类有 100 个示例,总共有12 个类。在我尝试过的所有 CNN 模型中,我唯一能做出的推论是我的训练准确率稳定在 97%,但我的验证准确率是 7-8%,这可能是随机的。
那么问题出在哪里?
听起来你严重过度拟合。基本上,您需要使用比您当前使用的模型更简单的模型或收集(大量)更多数据。通常,您拥有的数据越多,您可以在不过度拟合的情况下拟合的模型就越复杂。
我认为在如此小的数据集上使用 CNN 不会获得有意义的结果。从具有 1 到 3 个级别的简单决策树开始,以建立基准。也许尝试具有高度正则化的线性模型。您正在寻找训练集上的较差性能(但优于随机)和验证集上的类似性能。然后,您可以开始尝试更复杂的模型,以更好地拟合训练集,并可能更好地推广到验证集。