Если вы только начинаете изучать модели LSTM, я рекомендую использовать stateful=False
. Как только вы освоитесь с формами ввода и тем, как работает LSTM, вы можете рассмотреть возможность использования stateful=True
. Подробнее об этом можно прочитать здесь .
При этом, Keras требует, чтобы данные были отформатированы как (num_samples, time_stepss, num_features)
. batch_size
- это параметр, который вы устанавливаете, когда хотите соответствовать вашей модели. Действительно, и batch_size
, и time_steps
являются гиперпараметрами, которые вы можете настроить и посмотреть, какой из них приведет к лучшей производительности. Итак, сначала определитесь с time_steps
и хотите, чтобы сэмплы имели перекрытия или нет.
Например, вы можете решить создать сэмплы с перекрытием time_steps=4
и 2 time_steps между каждым сэмплом:
x [0], x [1], x [2], x [3] -> y [0], y [1], y [2], y [3]
x [2], x [3], x [4], x [5] -> y [2], y [3], y [4], y [5]
x [4], x [5], x [6], x [7] -> y [4], y [5], y [6], y [7]
...
С time_steps
и фиксированным перекрытием вы получите всего num_samples
. Затем вы можете подать эти данные в model.fit()
с batch_size
как 32, 64 и т. Д.
Если вы хотите избежать написания кода для изменения ваших данных, вы можете использовать Keras's TimeseriesGenerator . Обратите внимание, что длина используется для time_steps
, а stride
определяет перекрытие.