Как я могу создать LSTM AutoEncoder с PyTorch? - PullRequest
5 голосов
/ 22 января 2020

У меня есть данные в виде DataFrame:

       dOpen     dHigh      dLow    dClose   dVolume  day_of_week_0  day_of_week_1  ...  month_6  month_7  month_8  month_9  month_10  month_11  month_12
639 -0.002498 -0.000278 -0.005576 -0.002228 -0.002229              0              0  ...        0        0        1        0         0         0         0
640 -0.004174 -0.005275 -0.005607 -0.005583 -0.005584              0              0  ...        0        0        1        0         0         0         0
641 -0.002235  0.003070  0.004511  0.008984  0.008984              1              0  ...        0        0        1        0         0         0         0
642  0.006161 -0.000278 -0.000281 -0.001948 -0.001948              0              1  ...        0        0        1        0         0         0         0
643 -0.002505  0.001113  0.005053  0.002788  0.002788              0              0  ...        0        0        1        0         0         0         0
644  0.004185  0.000556 -0.000559 -0.001668 -0.001668              0              0  ...        0        0        1        0         0         0         0
645  0.002779  0.003056  0.003913  0.001114  0.001114              0              0  ...        0        0        1        0         0         0         0
646  0.000277  0.004155 -0.002227 -0.002782 -0.002782              1              0  ...        0        0        1        0         0         0         0
647 -0.005540 -0.007448 -0.003348  0.001953  0.001953              0              1  ...        0        0        1        0         0         0         0
648  0.001393 -0.000278  0.001960 -0.003619 -0.003619              0              0  ...        0        0        1        0         0         0         0

Мой ввод будет 10 строк (уже в горячем виде). Я хочу создать n-мерное авто-закодированное представление. Итак, насколько я понимаю, мой ввод и вывод должны быть одинаковыми.

Я видел несколько примеров, чтобы построить это, но все еще застрял на первом шаге. Являются ли мои тренировочные данные просто множеством этих образцов, чтобы составить матрицу? Что тогда?

Прошу прощения за общий характер вопроса. Любые вопросы, просто задавайте и я уточню в комментариях.

Спасибо.

1 Ответ

2 голосов
/ 31 января 2020

Не совсем ясно из вопроса, чего вы пытаетесь достичь. Исходя из того, что вы написали, вы хотите создать автоэнкодер с тем же вводом и выводом, и это не очень важно для меня, когда я вижу ваш набор данных. В общем случае кодирующая часть автоэнкодера создает модель, которая на основе большого набора входных функций создает небольшой выходной вектор, а декодер выполняет обратную операцию восстановления вероятных входных характеристик на основе полного набора выходных данных. и входные функции. Результатом использования автоэнкодера является улучшенный (в некотором смысле, например, с удаленным шумом и т. Д. c) вход.

Здесь вы можете найти несколько примеров с третьим вариантом использования, обеспечивающим код для данных последовательности, обучение модели генерации случайных чисел. Вот еще один пример , который выглядит ближе к вашему приложению. Последовательная модель построена для кодирования большого набора данных с потерей информации. Если это то, чего вы пытаетесь достичь, вы найдете код там.

Если целью является прогнозирование последовательности (например, будущие цены на акции), это и , что Пример представляется более подходящим, поскольку вы, скорее всего, хотите предсказать только несколько значений в вашей последовательности данных (скажем, dHigh и dLow), и вам не нужно прогнозировать day_of_week_n или month_n (даже при том, что эта часть модели автоэнкодера, вероятно, будет тренироваться намного надежнее, поскольку схема довольно ясна). Этот подход позволит вам предсказать одно последующее значение выходного признака (завтра dHigh и dLow)

Если вы хотите предсказать последовательность будущих выходов, вы можете использовать последовательность выходов , а не один в вашей модели.

В общем, структура входов и выходов полностью зависит от вас

...