Я пытаюсь понять, как Pytorch реализует пакетирование для данных временных рядов с несколькими признаками.Я экспериментирую с биржевыми данными, которые имеют [открытый, закрытый, высокий, низкий, объем] для каждого временного шага.В Keras я мог бы объединить несколько временных шагов вместе и передать их через модель, чтобы получить прогноз следующих временных шагов.например.кормите 10 раз в шаге и прогнозируйте цену в 11 раз.но в pytorch он делает прогноз на каждом временном шаге, хотя я пытаюсь объединить его.Я смотрел учебные пособия по Udacity и читал как можно больше форумов и блогов о Pytorch LSTM, но они, кажется, используют примеры отдельных функций или они подают отдельные буквы для моделей NLP, также используя 1 функцию, которая здесь не применима.
Исходя из того, что я понимаю, если у меня есть данные, которые выглядят так:
data_from_csv = [[time, open, close, high, low, volume],
[1,10,11,15,9,100],
[2,11,12,16,9,100],
[3,12,13,17,9,100],
[4,13,14,18,9,100],
[5,14,15,19,9,100],
[6,15,16,10,9,100]]
Я могу создать скользящее окно, которое принимает несколько временных шагов и группирует их вместе для подачи через LSTM.Я предполагаю, что на данный момент мне нужно уточнить, какими будут следующие термины из документов:
Особенности: Это, например, количество точек данных.[открыть, закрыть, высокий, низкий, объем] или 5 для этого примера?
Input_size: я предполагаю, что это создает узел LSTM для каждой функции или 5 для этого примера?
seq_len:это длина партии?
партия: сколько это партий или длина партии?
Из того, что я понимаю, подача партии с seq_len 2 в LSTM вэтот пример будет выглядеть следующим образом:
создать LSTM с input_size 5 (для скольких объектов), присвоить ему произвольный скрытый размер 10, чтобы удвоить входной размер.И num_layers 1 на данный момент, с batch_first как true (кажется, что это обычная практика) и линейным слоем в конце с выводом 1 для прогноза, который должен выглядеть следующим образом: Модель Lstm с 5 входами и 1 выходом
Если бы я сделал скользящее окно с seq_length 2 из вышеперечисленных данных, оно должно иметь форму (1, 2, 5) для batch_size 1, seq_len 2 и input_size как5. Я могу изменить данные так, чтобы они выглядели следующим образом:
batch_one = [ [ [10,11,15,9,100],
[11,12,16,9,100] ] ]
batch_two = [ [ [11,12,16,9,100],
[12,13,17,9,100] ] ]
будет, конечно, больше пакетов (5 для этого примера), так как скользящее окно будет продолжаться до второго, последнего шага, поэтому я могупредсказать 6-го.Я бы тоже сначала нормализовал их, но для примера это не так.Итак, если это форма пакета с seq_length 2 для 5 объектов, я представляю, что он подается в LSTM и получает один прогноз на основе входного пакета с прогнозом следующего открытия:
Lstm с подачей пакета входных данных
Когда я пытаюсь это сделать, я получаю прогноз для каждого временного шага / seq_length вместо каждого пакета, как я делаю в Keras.Это нормально или я кормлю каждый раз, а не делаю партии?Я должен выбросить все, кроме последнего прогноза?Определить ли это поведение в функции forward?