为什么有时候CNN的模型只预测了所有其他班级中的一个呢?

问题描述

我是深度学习领域的新手,所以请不要像Reddit那样刻薄!这似乎是一个一般性问题,因此我不会在此给出我的代码,因为它似乎没有必要(如果是,这里有指向colab的链接)

关于数据:您可以找到原始数据here。它是原始数据集82 GB的缩小版本。

一旦我训练我的CNN,它每次都会预测‘没有糖尿病视网膜病变’(没有DR),准确率达到73%。这是因为有大量的无DR映像还是其他原因?我没有头绪!我可以预测的5个类是["Mild", "Moderate", "No DR", "Proliferative DR", "Severe"]

可能是错误的代码,希望你们能帮忙


解决方案

我正要评论:

更严格的方法是开始测量数据集平衡:每个类有多少个图像?这可能会为您的问题提供答案。

但还是忍不住看了一下您给的链接。Kaggle已经向您概述了数据集:

快速计算:25,812 / 35,126 * 100 = 73%。这很有趣,你说你的准确度是74%。您的模型在一个不平衡的数据集上学习,第一个类被过度表示,25k/35k是巨大的。我的假设是,您的模型一直在预测第一类,这意味着您最终的平均精确度将为74%

您应该做的是平衡您的数据集。例如通过仅允许来自第一类的35,126 - 25,810 = 9,316个示例在历元期间出现。更好的做法是在所有类之间平衡您的数据集,以便每个类在每个纪元中只出现n次。

相关文章