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

Я совершенно новичок в Python и LSTM.У меня набор данных выглядит следующим образом (более 600 меток):

Метка, последовательность

1,18 2 32 38 20 3314 3315 3316 3317 3318 3319

1,536794 795 960 25 335 336 26 27

1 296 23 24 25 28 28 336 26 27

1,112 30 28 336 26 27

2,296 23 24 1955 1955 348 27 437

2,112 31 426 3724 3714 3715 3715 529 390 391 390 531

3,1300

3,1300 1320 1321 1322 1322

3,1303 1304 13051306 1307 1309 1357 1333

3,1323 1324 1325 1326 1327 1328

3,1300 1320

....

Так как я искал вводФорма данных LSTM в Керасе должна быть в 3D форме.Я не знаю, как я могу преобразовать эти данные в подходящий формат.Я нашел этот код, но не уверен, как его использовать:

model = Sequential()
model.add(LSTM(128, input_shape=(10, 16))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd')

# fit model
model.fit(X, y, epochs=3, batch=16)

Пожалуйста, посоветуйте мне, как я могу изменить свой набор данных?

1 Ответ

0 голосов
/ 04 июня 2018

У вас есть последовательности различной длины для каждой метки, первым шагом будет pad_sequence , чтобы все последовательности были дополнены до некоторой максимальной длины.Вы получите что-то вроде (samples, max_seq_length, 1).Теперь вы можете перейти в LSTM(..., input_shape=(max_seq_length, 1)).Чтобы позволить LSTM пропускать временные шаги, вы используете Masking layer перед LSTM.Таким образом, последовательности заполнения изменят ваши данные, маскирование пропустит заполненные данные, и LSTM теперь обработает последовательность.

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