【问题标题】:How to use data augmentation on uneven multiclass dataset?如何在不均匀的多类数据集上使用数据增强?
【发布时间】:2018-11-14 04:57:08
【问题描述】:

我有 12 个类(图像),每个类中分布不均匀的数据。

它们如下(所有图片):

X1 = 16

X2 = 203

X3 = 192

X4 = 220

X5 = 172

X6 = 143

X7 = 22

X8 = 89

X9 = 31

X10 = 89

X11 = 10

X12 = 204

我正在尝试使用给定的数据集训练 CNN。我想知道我是否应该只对数据较少的类或所有类应用数据增强?有没有人训练过和我类似的模型?另外,我应该使用哪种 CNN 架构?我已经使用了这个(通过对所有类应用数据增强),但我停止了,因为准确度在 14% 左右(我在第一个 epoch 之间停止了)

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=input_shape)) # input_shape = (150,150)
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(12))
model.add(Activation('sigmoid'))

任何帮助将不胜感激。如果有人有任何提示,我想听听一些。最近让我很难受。

【问题讨论】:

标签: python machine-learning neural-network keras conv-neural-network


【解决方案1】:

您的数据中有 12 个类别,共有 1391 张图像。您最常使用的课程是具有 220 张图像的 X4(=总数据的 15.8%)。 15.8% 的准确率是你应该超过的基线分数。你很早就停止了训练,你应该训练几个 epoch 看看它是怎么回事。

您只有 1391 张图像,数据增强是不可避免的。您可以对所有类别进行增强试验,然后您可以尝试添加类别权重以查看分数是否会变得更好。

您可以填写一个 class_weight 字典并使用它来拟合您的模型:

class_weight = {0 : 1,    1: 1,    2: 5, ....}
model.fit(X_train, Y_train, nb_epoch=5, batch_size=32, class_weight=class_weight)

【讨论】:

  • 我应该如何定义我的class_weights?数据越少,权重越大?
  • 没错,权重越大,数据越少。尝试各种组合以使用哪种组合来最大化您的分数。
猜你喜欢
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2018-06-11
相关资源
最近更新 更多