Class 具有不平衡类的Tensorflow Resnet

Class 具有不平衡类的Tensorflow Resnet,class,tensorflow,deep-learning,resnet,sample-data,Class,Tensorflow,Deep Learning,Resnet,Sample Data,我使用带有Tensorflow的Resnet来训练一个包含20个类的模型 我的问题是,我有6-7个类,有很多样本,大约相同数量的类有中等数量的样本,其余的类只有很少的样本。在这个给定的分布中,我的模型有一个很强的倾向,即预测样本较大的班级,而不是样本较小的班级。我试图通过减少大班的样本数量来平衡我的班,这有助于在预测过程中给小班让出一个位置,但现在我已经到了一个地步,我无法将我的模型提高到90%以上的准确率,而且我觉得在大班中削减样本会丢失很多有价值的信息 因此,在我购买更多样本之前,我想知道是

我使用带有Tensorflow的Resnet来训练一个包含20个类的模型

我的问题是,我有6-7个类,有很多样本,大约相同数量的类有中等数量的样本,其余的类只有很少的样本。在这个给定的分布中,我的模型有一个很强的倾向,即预测样本较大的班级,而不是样本较小的班级。我试图通过减少大班的样本数量来平衡我的班,这有助于在预测过程中给小班让出一个位置,但现在我已经到了一个地步,我无法将我的模型提高到90%以上的准确率,而且我觉得在大班中削减样本会丢失很多有价值的信息

因此,在我购买更多样本之前,我想知道是否有一种方法可以处理不平衡的类,这种逻辑使得模型能够很好地识别是否存在较大的类(因为它有如此多的样本,以至于它非常能够识别它们的存在),然后,如果它们不存在,去检查还有哪些课程。想法是使用我所有的样本,而不是减少它们


我已经在Keras/Tensorflow中尝试了加权类选项,但没有任何帮助。

除了您目前使用的欠采样技术外,还有两种处理不平衡数据的方法:

  • 类别权重
  • 过采样

  • 过采样与您所做的相反,即,您将多次训练每个未被表示类的样本。类权重是指在训练过程中告诉模型每个类样本的权重(神经网络训练中的权重更新)。tensorflow支持这两种情况,您可以在中找到它们。

    这可能是一个很好的解决方案