第一个时代过度配合

我使用卷积神经网络(通过Keras)作为我的面部表情识别模型(55个主题)。 我的数据集相当困难,并且有7个类别的大约450k。 我已经为每个科目和每个班级的标签平衡了我的训练集。

我实现了一个非常简单的CNN架构(实时数据增强):

model = Sequential()
model.add(Convolution2D(32, 3, 3, border_mode=borderMode, init=initialization,  input_shape=(48, 48, 3)))
model.add(BatchNormalization())
model.add(PReLU())
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(256))
model.add(BatchNormalization())
model.add(PReLU())
model.add(Dropout(0.5))

model.add(Dense(nb_output))
model.add(Activation('softmax'))

在第一个时期之后,我的训练损失不断减少,而验证损失增加。 过度配合会很快发生吗? 或者我的数据有问题吗? 我是否也应该平衡我的测试集?


这可能是因为这项任务很容易解决,经过一个时代后,模型已经学会了足够的解决办法,而培养更多的时代只会增加过度拟合。

但是如果你已经平衡了训练集而不是测试集,那么可能发生的情况是你正在训练一项任务(在均匀分布的数据上进行表达式识别),然后你正在测试一个稍微不同的任务,因为测试集是不平衡。

链接地址: http://www.djcxy.com/p/93561.html

上一篇: Overfitting after first epoch

下一篇: Double comparison trick in Java