我正在训练由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)
答案 0 :(得分:0)
CNN的数据集很小,可以一概而论。另外,您的模型有许多参数需要学习,而数据量较小,这又是一个挑战。