определение длины паттерна в последовательности с lstm в кератах - PullRequest
0 голосов
/ 11 мая 2018

Я работаю в сети LSTM, чтобы обнаружить яму на дороге. У меня есть набор данных с колесной скоростью от каждого колеса автомобиля. когда произошла яма, следующие 40 меток - это «1». Все остальные метки имеют значение «0». Это моя модель:

model = Sequential()
model.add(LSTM(64,input_shape=(len(X_train[0]),1),return_sequences=True))
model.add(Dropout(0.5))
model.add(Activation('relu'))
model.add(BatchNormalization())
model.add(LSTM(64,input_shape=(len(X_train[0]),1),return_sequences=True))
model.add(Dropout(0.5))
model.add(Activation('relu'))
model.add(BatchNormalization())
model.add(TimeDistributed(Dense(1)))
model.add(Activation('sigmoid'))

Из этого я получаю очень хорошие прогнозы: Вверху: прогнозируемый, внизу: метки Теперь я хочу вычислить длину обнаруженной последовательности, также известной как яма. Вот где я борюсь. Я думал об использовании своего рода окна. все за пределами окна установлено равным 0, все внутри сохраняется как есть. Проблема с этим решением в том, что мои прогнозы неверны. Поскольку я изменяю данные, сеть, кажется, находит яму, даже когда ямы нет. Кто-нибудь знает, как я могу найти длину ямы по-другому?

1 Ответ

0 голосов
/ 11 мая 2018

Предполагая, что ямы непрерывны, вместо того, чтобы предсказывать каждую точку как яму или нет, вы можете позволить сети предсказать изменение от нормы до ямы и ямы до нормы на основе движущегося окна.Это все еще будет проблемой классификации с несколькими метками.Теперь вы можете рассчитать длину ямы из точек, которые модель прогнозирует изменения, зная, что вы начинаете на нормальной поверхности.

...