混合CNN RNN具有强烈的过度拟合

时间:2019-01-13 13:39:36

标签: keras deep-learning signal-processing conv-neural-network recurrent-neural-network

我正在训练由CNN和RNN组成的神经网络,用于多通道信号。问题它在我的模拟的50%(多次运行)中过拟合。我使用adam的学习率是0.0006和0.001。此外,批处理大小约为256(对于较小的相同数据集,约为2000个)。

我为GRU单元尝试了不同的大小,并添加了Batchnorm,但不起作用。

如您所见,当我有义务使用具有最佳Val_loss的验证时,但是由于这个问题,我无法获得高于43%的结果是有问题的。我只需要52%的测试精度即可。

我该怎么做才能获得更高的准确性?

正规化?初始化? Relu功能? http://i.imgur.com/WcWTwWh.png

    x = Conv2D(F1,
               (1, 32))(x)
    x = BatchNormalization(axis=1)(x)
    x = Conv2D((C,1))(x)
    x = BatchNormalization(axis=1)(x)
    x = Activation(activation='elu')(x)
    x = AveragePooling2D(pool_size=(1, 4))(x)
    x = Dropout(rate=r)(x)

    x = Permute((3, 1, 2))(x)
    x = Reshape((size[0], size[1]))(x)

    x = GRU(64,
            activation='tanh',
            recurrent_activation='hard_sigmoid',
            use_bias=True,
            dropout=0.4,
            recurrent_dropout=0.4,
            implementation=1,
            input_shape=(size[0], size[1]))(x)


    x = GRU(64,
            activation='tanh',
            recurrent_activation='hard_sigmoid',
            use_bias=True,
            dropout=0.3,
            recurrent_dropout=0.3)(x)

    x = Dense(num_classes,
              use_bias=True)(x)
    x = Activation(activation='softmax')(x)

1 个答案:

答案 0 :(得分:0)

CNN的数据集很小,可以一概而论。另外,您的模型有许多参数需要学习,而数据量较小,这又是一个挑战。

  1. 通过使用“旋转”,“缩放”等预处理对训练数据中的新示例进行扩展。
  2. Dropout是控制过拟合的一种非常强大的技术。(在cnn模型中使用过,在rnn模型中也使用过),rnn存在spaced1D丢失,它会丢掉一个完整的暗点,这又有助于更好地利用概括。
相关问题