Увеличение потерь на валидацию и постоянная точность обучения 1D cnn - PullRequest
0 голосов
/ 13 декабря 2018

Я внедряю CNN для распознавания речи.Входными являются MEL частоты с формой (85314, 99, 1), а метки кодируются в горячем виде с 35 выходными классами (форма: (85314, 35)).Когда я запускаю модель, точность обучения (изображение 2) начинается с высокой и остается неизменной на протяжении нескольких эпох, в то время как потери при проверке (изображение 1) увеличиваются.Следовательно, это, вероятно, переоснащение, но я не могу найти причину проблемы.Я уже снизил скорость обучения и поиграл с размерами партий, но результаты остались прежними.Также должно быть достаточно данных о тренировках.Есть ли еще проблемы с моими настройками гиперпараметров?

enter image description here

enter image description here

Моя модельи гиперпараметры определены следующим образом:

#hyperparameters
input_dimension = 85314
learning_rate = 0.0000025
momentum = 0.85
hidden_initializer = random_uniform(seed=1)
dropout_rate = 0.2

# create model
model = Sequential()
model.add(Convolution1D(nb_filter=32, filter_length=3, input_shape=(99, 1), activation='relu'))
model.add(Convolution1D(nb_filter=16, filter_length=1, activation='relu'))
model.add(Flatten())
model.add(Dropout(0.2))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu'))
model.add(Dense(35, activation='softmax'))


model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['acc'])
history = model.fit(frequencies_train, labels_hot, validation_split=0.2, epochs=10, batch_size=50)

1 Ответ

0 голосов
/ 13 декабря 2018

Вы используете «binary_crossentropy» для задачи нескольких классов.Измените его на "categoryor_crossentrop".

Точность, вычисленная с помощью Keras с использованием binary_crossentropy с моделью из более чем двух меток, просто неверна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...