我正在使用卷积神经网络(通过 Keras)作为我的面部表情识别模型(55 名受试者)。我的数据集非常难,大约 450k,有 7 个类。我已经平衡了每个主题和每个班级标签的训练集。
我实现了一个非常简单的 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'))
在第一个 epoch 之后,我的训练损失不断减少,而验证损失增加。过拟合会很快发生吗?还是我的数据混乱有问题?我还应该平衡我的测试集吗?