Python 为什么有时候CNN的模型只能预测所有其他类别中的一个?

Python 为什么有时候CNN的模型只能预测所有其他类别中的一个?,python,deep-learning,pytorch,conv-neural-network,Python,Deep Learning,Pytorch,Conv Neural Network,我对深度学习领域还比较陌生,所以请不要像Reddit那样刻薄!这似乎是一个一般性的问题,所以我不会在这里给出我的代码,因为它似乎没有必要(如果有,这里是到的链接) 关于数据:您可以找到原始数据。它是原始数据集82 GB的缩小版 一旦我对CNN进行了这方面的培训,它每次都能预测“无糖尿病视网膜病变”(无DR),准确率为73%。这是因为大量无DR图像还是其他原因?我不知道!我预测的5类是[“轻度”、“中度”、“无DR”、“增殖性DR”、“重度”] 这可能只是一段糟糕的代码,希望你们能帮上忙我正要发表

我对深度学习领域还比较陌生,所以请不要像Reddit那样刻薄!这似乎是一个一般性的问题,所以我不会在这里给出我的代码,因为它似乎没有必要(如果有,这里是到的链接)

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

一旦我对CNN进行了这方面的培训,它每次都能预测“无糖尿病视网膜病变”(无DR),准确率为73%。这是因为大量无DR图像还是其他原因?我不知道!我预测的5类是
[“轻度”、“中度”、“无DR”、“增殖性DR”、“重度”]


这可能只是一段糟糕的代码,希望你们能帮上忙

我正要发表评论:

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

但是我忍不住看了看你给我的链接。Kaggle已经为您提供了数据集的概述:

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


您应该做的是平衡数据集。例如,仅允许第一个类中的示例在一个历元期间出现。更好的是,在所有类中平衡数据集,这样每个类在每个历元中只出现n次。

我正要评论:

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

但是我忍不住看了看你给我的链接。Kaggle已经为您提供了数据集的概述:

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


您应该做的是平衡数据集。例如,仅允许第一个类中的示例在一个历元期间出现。更好的是,在所有类上平衡数据集,这样每个类在每个历元中只出现n次。

正如Ivan已经指出的,您有一个类不平衡问题。这可以通过以下方式解决:

  • 在线硬负挖掘:在计算损失后的每次迭代中,您可以对批次中属于“no DR”类的所有元素进行排序,并只保留最差的
    k
    。然后,仅使用这些较差的k来估计梯度,并丢弃所有剩余的。
    参见,例如:
    Abhinav Shrivastava、Abhinav Gupta和Ross Girshick(CVPR 2016)

  • 对“普通”交叉熵损失的修改可用于解决类不平衡问题



  • 相关帖子和。

    正如Ivan已经指出的,你有一个班级不平衡的问题。这可以通过以下方式解决:

  • 在线硬负挖掘:在计算损失后的每次迭代中,您可以对批次中属于“no DR”类的所有元素进行排序,并只保留最差的
    k
    。然后,仅使用这些较差的k来估计梯度,并丢弃所有剩余的。
    参见,例如:
    Abhinav Shrivastava、Abhinav Gupta和Ross Girshick(CVPR 2016)

  • 对“普通”交叉熵损失的修改可用于解决类不平衡问题



  • 相关帖子和。

    您可以删除培训中的一些无DR图像,并测试您的理论!我确实试过这么做!虽然准确率下降到35%,不到一半,但该模型至少预测了其他类别,我不介意在6层CNN上的准确率如此之低;)您可以在培训中删除一些无DR图像,并测试您的理论!我确实试过这么做!虽然准确率下降到35%,不到一半,但该模型至少预测了其他类别,我不介意在6层CNN上的准确率如此之低;)我试过这样做,我想我也可以在其他类中制作图像的旋转/翻转副本,以这种方式扩展数据集,你认为这些会起作用吗?这将被视为数据扩充,因此我认为它不会平衡这一差距。增强图像并不完全是新图像。从这个意义上说,我认为第一个类仍然会因为其内容的多样性而胜过其他类。我尝试过这样做,我想我也可以在其他类中制作图像的旋转/翻转副本,以这样扩展数据集,你认为这些会起作用吗?这将被视为数据扩充,因此,我认为它无法弥补这一差距。增强图像并不完全是新图像。从这个意义上说,我认为第一堂课仍然会因为内容的多样性而胜过其他课程。噢,哇,谢谢你,我没听说过这些before@Divith我想如果你在谷歌上搜索“阶级失衡”,你也会遇到其他选择。这个列表一点也不全面。谢谢你提供的链接,不幸的是我不能再投票了!哦,哇,谢谢你,我没听说过这些before@Divith我想如果你在谷歌上搜索“阶级失衡”,你也会遇到其他选择。这个列表一点也不全面。谢谢你提供的链接,不幸的是我不能更新