Я обучаю нейронную сеть, состоящую из CNN и RNN, для многоканального сигнала. Проблема Это подходит для 50% моей симуляции (несколько прогонов). Я использовал Адам с 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)