Сеть Keras LSTM предсказывает, что все сигналы относятся к одной категории (среди 3 разных) - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю над проектом, который включает классификацию сигналов. Я пробую разные модели ANN, используя keras, чтобы увидеть, какая из них лучше, сейчас фокусируюсь на простых сетях, но я борюсь с LSTM, следуя этому примеру: https://machinelearningmastery.com/how-to-develop-rnn-models-for-human-activity-recognition-time-series-classification/.

Мои входы - это одномерные сигналы, которые я получаю от электронного датчика c, который будет разделен на 3 разные категории. Смотрите здесь один сигнал двух разных категорий, так что вы видите, что они со временем сильно различаются. https://www.dropbox.com/s/9ctdegtuyjamp48/example_signals.png?dl=0

Чтобы начать с простой модели, мы пробуем следующую простую модель. Поскольку сигналы имеют разную длину, для них был выполнен процесс маскирования, увеличьте каждый из них до самого длинного с маскированным значением -1000 (невозможное значение в нашем сигнале). Данные корректно преобразуются из 2D в 3D (поскольку это необходимо в 3D для слоя LSTM), используя следующую команду, поскольку у меня есть только одна функция:

Inputs = Inputs.reshape((Inputs.shape[0],Inputs.shape[1],1))

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

model = Sequential()
model.add(Masking(mask_value=-1000, input_shape=(num_steps,1)))
model.add(LSTM(20, return_sequences=False))
model.add(Dense(15, activation='sigmoid'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['categorical_accuracy'])

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

Я не думаю, что это нормальное поведение: может быть плохая точность, но это должно быть сделайте с некоторой элементарной ошибкой в ​​модели, которую я не замечаю, поскольку данные в обучении введены правильно, ошибок нет, перепроверены несколько раз. У кого-нибудь есть идеи, почему это происходит? Дайте мне знать, если какая-либо дополнительная информация может быть полезна для добавления в этот пост.

...