#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-е измерение представляет особенности ваших данных для каждого временного шага.. Для нашего предложения ранее мы можем векторизовать каждое слово