Keras - 二进制分类

Keras - Binary Classification

我目前正在尝试使用卫星图像来识别苹果园。而且我在每个 class 的代表性数据数量方面面临一个小问题。

其实我的问题是:

Is it possible to take randomly some different images in my "not-apples" class at each epoch because I have much more of theses (compared to the "apples" one) and I want to increase the probability my network will classify out an image unrepresentative.

在此先感谢您的帮助

这在 Keras 中是不可能的。默认情况下,Keras 会打乱您的训练数据,然后以小批量方式对其进行训练。但是,仍然有一些方法可以重新平衡您的数据集。

您面临的训练数据不平衡问题很常见。您有很多选择;我在下面列出了一些:

  1. 您可以使用 model.fit() 函数的 class_weight 关键字调整 classes 的相对权重。
  2. 您可以 "up-sample" 您的 "apples" class 或 "down-sample" 您的 "non-apples" class 两者的数量相等 classes 在训练期间。
  3. 您可以生成 "apples" class 的合成图像来扩充您的数据集。为此,ImageDataGenerator class in Keras can be particularly useful. This Keras tutorial很好地介绍了它的用法。

根据我的经验,我发现#2 和#3 最有用。 #1 受到以下事实的限制:当使用 class 权重相差几个数量级和较小的批量时,随机梯度下降的收敛性会受到影响。

Jason Brownlee 汇总了 a list of tactics for dealing with imbalanced classes 可能对您也有用。