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 会打乱您的训练数据,然后以小批量方式对其进行训练。但是,仍然有一些方法可以重新平衡您的数据集。
您面临的训练数据不平衡问题很常见。您有很多选择;我在下面列出了一些:
- 您可以使用
model.fit()
函数的 class_weight
关键字调整 classes 的相对权重。
- 您可以 "up-sample" 您的 "apples" class 或 "down-sample" 您的 "non-apples" class 两者的数量相等 classes 在训练期间。
- 您可以生成 "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 可能对您也有用。
我目前正在尝试使用卫星图像来识别苹果园。而且我在每个 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 会打乱您的训练数据,然后以小批量方式对其进行训练。但是,仍然有一些方法可以重新平衡您的数据集。
您面临的训练数据不平衡问题很常见。您有很多选择;我在下面列出了一些:
- 您可以使用
model.fit()
函数的class_weight
关键字调整 classes 的相对权重。 - 您可以 "up-sample" 您的 "apples" class 或 "down-sample" 您的 "non-apples" class 两者的数量相等 classes 在训练期间。
- 您可以生成 "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 可能对您也有用。