Передача данных в RNN с использованием скользящего окна

У меня проблемы с LSTM и RNN, поэтому прошу прощения, если этот вопрос звучит как очень простой вопрос. Я был бы признателен, если бы вы могли помочь в любом случае. Я пытаюсь обучить свою RNN с помощью LSTM, но я не уверен, как настроить свою модель и конвейер данных.

Мои данные выглядят так, как показано ниже. Он имеет 2 функции для ввода, и я предсказываю одну метку из нескольких классов.

Вход =

array([[A, 0.250],
       [B, 0.654],
       [C, 0.643],
       [D, 0.859],
       [E, 0.135],
       [F, 0.913],
       [G, 0.493],
       [H, 0.267]])

Выход =

array([[2],
       [3],
       [4],
       [4],
       [0],
       [1],
       [1],
       [2]])

У меня есть много образцов для моих данных. Для простоты допустим, что у меня есть 100 образцов. Итак, мои входные и выходные формы выглядят так: input_shape(100,8,2) output_shape=(100,8,1) Надеюсь, понятно, что мои временные шаги RNN равны 8.

Теперь на основе этого https://datascience.stackexchange.com/questions/27628/sliding-window-leads-to-overfitting-in-lstm, я пришел к выводу, что мне нужен подход скользящего окна для разделения моих данных, чтобы он мог изучить все взаимосвязи между различными временными шагами, поскольку это ключ для моих данных. Допустим, мое скользящее окно равно 6, тогда мои формы становятся такими input_shape(100,4,8,2) and output_shape(100,4,8,1)

  1. Как мне разделить мои входные и выходные данные таким образом, чтобы получить скользящее окно из 6 и таким образом, чтобы я получил вышеуказанную форму?

Теперь у меня есть RNN, определенный вот так

model = Sequential()   
model.add(Bidirectional(LSTM(units=128), , return_sequences=True, input_shape=(8,2))
model.add(Dense(8, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  1. Как мои входные и выходные данные будут передаваться моему RNN?

person Musicshi    schedule 04.02.2021    source источник