Вы на правильном пути, но путаете количество единиц с временными шагами. units
- это гиперпараметр, который управляет выходным измерением LSTM. Это размерность выходного вектора LSTM, поэтому если input равен (1,6)
и у вас есть 32 единицы, вы получите (32,)
, так как в LSTM будет проходить одиночный временной шаг и получится вектор размером 32.
Временные шаги относятся к размеру истории, которую вы можете рассмотреть в LSTM. Так что это совсем не то же самое, что юниты. Вместо того, чтобы обрабатывать данные самостоятельно, у Keras есть удобный TimeseriesGenerator , который будет принимать двухмерные данные, подобные вашим, и использовать скользящее окно с размером временного шага для генерации данных временных рядов. Из документации:
from keras.preprocessing.sequence import TimeseriesGenerator
import numpy as np
data = np.array([[i] for i in range(50)])
targets = np.array([[i] for i in range(50)])
data_gen = TimeseriesGenerator(data, targets,
length=10, sampling_rate=2,
batch_size=2)
assert len(data_gen) == 20
batch_0 = data_gen[0]
x, y = batch_0
assert np.array_equal(x,
np.array([[[0], [2], [4], [6], [8]],
[[1], [3], [5], [7], [9]]]))
assert np.array_equal(y,
np.array([[10], [11]]))
, который вы можете использовать в каталоге model.fit_generator(data_gen,...)
, что дает вам возможность опробовать различные частоты выборки, временные шаги и т. Д. Вероятно, вам следует изучить эти параметры и то, как они влияют на результат в вашей диссертации.