У меня есть временной ряд последовательности n векторов, которые мне нужно передать в LSTM с помощью скользящего окна.
В различных ресурсах, которые я читаю онлайн, seq_length
часто называют длиной окна [или количеством ячеек LSTM], а context_size
определяется как размер ввода в LSTM на временном шаге. (например, один входной вектор за шаг).
В любой данный момент времени t я хочу передать LSTM точки x_ {tm},…, x_ {t-1},…, x_ {t} затем следует плотный слой и прогнозировать категориальный целевой атрибут на каждом шаге.
Если я хочу следовать принципу скользящего окна, нужно ли явно разбивать входные данные на окна размером m ?
Например:
[x_ {tm},…, x_ {t-1},…, x_ {t}], [x_ {t-m + 1},…, x_ {t},…, x_ { t + 1}], [x_ {t-m + 2},…, x_ {t + 1}, x_ {t + 2}] и т. д.
Или, можно ли разбить входные данные на непересекающиеся порции [x_ {tm},…, x_ {t-1},…, x_ {t}], [x_ {t + 1}, …, X_ {t + m-1}, x_ {t + m}] и т. Д. И вместо этого измените размер context_size?
embeds = embeds.unfold(1, context_size, 1) # Keeping the step size to be 1
embeds = embeds.view(embeds.size(0), embeds.size(1), -1)
Есть ли лучший способ реализовать метод скользящих окон для данных временных рядов?