Форма ввода LSTM через файл json

#python-3.x #keras #lstm

#python-3.x #keras #lstm

Вопрос:

Я работаю над LSTM, и после предварительной обработки данных я получаю данные X в виде списка, который содержит 3 списка функций, и каждый список содержит последовательность из 50 пунктов в виде списка.

 X = [list:100 [list:3 [list:50]]]
Y = [list:100]
  

поскольку это многовариантный LSTM, я не уверен, как передать все 3 последовательности в качестве входных данных Keras-Lstm. Нужно ли мне преобразовывать ее в фрейм данных Pandas?

 model = models.Sequential()    
model.add(layers.Bidirectional(layers.LSTM(units=32,
                                               input_shape=(?,?,?)))
  

Ответ №1:

Вы можете сделать следующее, чтобы преобразовать списки в массивы NumPy:

 X = np.array(X)
Y = np.array(Y)
  

Вызов следующего после этого преобразования:

 print(X.shape)
print(Y.shape)
  

должно выводиться: (100, 3, 50) и (100,) соответственно. Наконец, значение input_shape уровня LSTM может быть (None, 50).

Ответ №2:

Аргументы вызова LSTM Doc:

 inputs: A 3D tensor with shape [batch, timesteps, feature].
  

Для работы с Keras вам придется преобразовать этот список в массив numpy.

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

  • 1-м измерением должен быть ваш batch_size, т.Е. Сколько пакетов данных у вас есть.

  • 2-е измерение — это ваши временные данные.

Пример: слова в предложении: «кошка села на собаку» -> «cat» — это временной шаг 1, «sat» — это временной шаг 2, а «on» — это временной шаг 3 и так далее.

  • 3-е измерение представляет особенности ваших данных для каждого временного шага.. Для нашего предложения ранее мы можем векторизовать каждое слово