Переоснащение нейронных сетей с помощью Python - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь смоделировать сеть, которая принимает 90 параметров и дает целое число от 1 до 6 включительно.Ниже приведена моя масштабированная модель, которую i намеревается начать, и я ценю любые исправления или указания

self.model = keras.Sequential()
self.model.add(BatchNormalization(input_shape=(None, 90)))
self.model.add(Activation(activation="relu"))
self.model.add(LSTM(50))
self.model.add(Activation(activation="relu"))
self.model.add(Dropout(0.01))
self.model.add(Dense(7,  activation="softmax"))

self.train_epoch = 6000
opt = keras.optimizers.Adam(lr=0.000002)
self.model.compile(optimizer=opt, loss=keras.losses.sparse_categorical_crossentropy,  metrics=['accuracy'])
info = self.model.fit(self.x, self.y, epochs=self.train_epoch, validation_data=(self.m, self.n),  shuffle=True )

Проблема заключается в том, что моя потеря в проверке продолжает расти через некоторое время.Я пробовал небольшие скорости обучения, высокое значение отсева и даже увеличенное количество слоев.Может кто-то, пожалуйста, посоветуйте мне, что я делаю неправильно.

Я также не уверен, сколько слоев использовать или узлов на каждый слой для достижения значений точности больше 0,5.

Есликто-то может помочь, я дам ссылку на данные и посмотрим, смогут ли они добиться лучших результатов.

Вот мой текущий график. введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Ваше утверждение и график противоречат друг другу.Когда вы испытываете переоснащение, всегда уменьшайте количество параметров модели (то есть слоев / ядер).Попробуйте тренировать меньше эпох.Вы, кажется, увеличиваете их.Кроме того, ваш уровень шансов составляет 1/7, а не 1/2.Я считаю, что это проблема 7 класса.

0 голосов
/ 13 февраля 2019

Конечно, если вы продолжите тренировку в течение длительного времени, ошибка валидации со временем возрастет.Как вы упомянули в заголовке, это общий результат перенастройки.И именно поэтому вы проверяете ошибку валидации (для выявления переоснащения и завершения обучения), а также ошибку обучения.Вы можете самостоятельно следить за потерей проверки, но также можете использовать Ранняя остановка .

Способ применения ранней остановки в Keras представлен по адресу: https://machinelearningmastery.com/how-to-stop-training-deep-neural-networks-at-the-right-time-using-early-stopping/

И обратите внимание, что LSTM используется для данных временных рядов (keras.**Sequential**()).

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