Модели -

Вариант — 3

В этом подходе мы используем сложенные lstms, чтобы мы могли сравнить производительность многоэтапных моделей вывода на основе кодировщика-декодера.

  • A

В этом подходе мы используем составные lstms для прогнозирования одношагового вывода.

Архитектура модели выглядит так:

Хотя не имеет особого смысла инициализировать начальные состояния второго lstm последними состояниями первого lstm, но это дало мне несколько лучшие результаты. Вы можете попробовать оба способа.

Код поезда -

Код вывода -

Во время вывода мы перебираем выходные данные модели для того же количества шагов, что и более ранние модели, для справедливого сравнения.

  • B

В этом подходе мы используем составные lstms для прогнозирования многоэтапного вывода.

Архитектура модели выглядит так:

Хотя не имеет особого смысла инициализировать начальные состояния второго lstm последними состояниями первого lstm, но это дало мне несколько лучшие результаты. Вы можете попробовать оба способа.

Кроме того, в этой модели шаги ввода и вывода должны быть равными, поскольку второй lstm имеет return_sequences=True.

Код поезда -

Код вывода -

Вариант — 4

Эти модели представляют собой гибрид между предыдущими моделями.

Хотя эти модели медленно сходятся и неэффективны, с их помощью мы можем сравнить производительность многоэтапных моделей вывода на основе кодера-декодера.

  • С принуждением учителя

В этом подходе мы используем сложенные lstms вместе с учителем, заставляющим предсказывать многоэтапный вывод.

Код поезда -

Код вывода -

  • Без принуждения учителя

В этом подходе мы используем сложенные lstms, не заставляя учителя предсказывать многоэтапный вывод.

Код поезда -

Код вывода -

  • Эффективность по функциям и временным шагам

Я исключил из записных книжек анализ производительности каждой функции за шаг времени, чтобы сделать их краткими, но вот как его можно добавить в существующий код:

Здесь gt_list и pred_list — это два списка длины n_out = 5, где каждый элемент представляет собой массив формы — (x,features), где x и характеристики зависят от наших данных, которые в данном случае — (5954, 24).

Таким образом, мы разделили ожидаемый результат и результат, который мы получили от моделей, на отдельные сегменты, соответствующие каждому временному шагу на стороне декодера, для удобства сравнения.

В этом фрагменте кода —

plt.plot(gt_list[i][:,j], c='blue', label="gt")

plt.plot(pred_list[i][:,j],c='red', label="pred")

я представляет временные шаги, которые идут от 0–4, а j обозначает функции, которые идут от 0–23. Таким образом, у нас будет 5 * 24 = 120 таких сравнений на модель.

  • Будущая работа

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

  • Источник данных


  • Все части

Часть — 1

"Часть 2"

Часть — 3

Часть — 4

  • Github и LinkedIn


https://www.linkedin.com/in/puneet-chandna-050486131/

  • Ссылки






https://machinelearningmastery.com/teacher-forcing-for-recurrent-neural-networks/

https://machinelearningmastery.com/develop-encoder-decoder-model-sequence-sequence-prediction-keras/

https://machinelearningmastery.com/how-to-develop-lstm-models-for-time-series-forecasting/

https://machinelearningmastery.com/return-sequences-and-return-states-for-lstms-in-keras/