Подготовка данных для входных последовательностей переменной длины

Подготовка данных для входных последовательностей переменной длины

Библиотеки глубокого обучения предполагают векторизованное представление ваших данных.

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

Эта векторизация позволяет коду эффективно выполнять матричные операции в пакетном режиме для выбранных вами алгоритмов глубокого обучения.

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

После прохождения этого урока вы будете знать:

  • Как дополнить последовательности переменной длины фиктивными значениями.
  • Как дополнить последовательности переменной длины до новой более длинной желаемой длины.
  • Как обрезать последовательности переменной длины до более короткой желаемой длины.

Начните свой проект с моей новой книгой Long-Term Memory Networks With Python, включая пошаговые инструкции и Исходный код Python файлы для всех примеров.

Давайте начнем.

Подготовка данных для входных последовательностей переменной длины для прогнозирования последовательности

Подготовка данных для входных последовательностей переменной длины для прогнозирования последовательности
Фото Адама Бауца, некоторые права защищены.

Обзор

Этот раздел разделен на 3 части; они есть:

  1. Надуманная проблема последовательности
  2. Заполнение последовательности
  3. Усечение последовательности

Среда

В этом руководстве предполагается, что у вас установлена ​​среда Python SciPy. В этом примере вы можете использовать Python 2 или 3.

В этом руководстве предполагается, что у вас установлен Keras (v2.0.4 +) с серверной частью TensorFlow (v1.1.0 +) или Theano (v0.9 +).

В этом руководстве также предполагается, что у вас установлены scikit-learn, Pandas, NumPy и Matplotlib.

Если вам нужна помощь в настройке среды Python, см. Этот пост:

Надуманная проблема последовательности

Мы можем придумать простую задачу последовательности для целей этого руководства.

Задача определяется как последовательности целых чисел. Есть три последовательности с длиной от 4 до 1 временных шагов, а именно:

Их можно определить как список списков в Python следующим образом (с интервалом для удобства чтения):

Мы будем использовать эти последовательности в качестве основы для изучения заполнения последовательностей в этом руководстве.

Нужна помощь с LSTM для прогнозирования последовательности?

Пройдите мой бесплатный 7-дневный курс электронной почты и откройте для себя 6 различных архитектур LSTM (с кодом).

Нажмите, чтобы зарегистрироваться, а также получите бесплатную электронную версию курса в формате PDF.

Начните БЕСПЛАТНЫЙ мини-курс прямо сейчас!

Заполнение последовательности

Функцию pad_sequences () в библиотеке глубокого обучения Keras можно использовать для дополнения последовательностей переменной длины.

Значение заполнения по умолчанию - 0,0, что подходит для большинства приложений, хотя это можно изменить, указав предпочтительное значение с помощью аргумента «значение». Например:

Заполнение, применяемое к началу или концу последовательности, называемое заполнением до или после последовательности, может быть указано аргументом «заполнение» следующим образом.

Заполнение перед последовательностью

Заполнение перед последовательностью используется по умолчанию (padding = 'pre')

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

При выполнении примера печатаются 3 последовательности с нулевыми значениями.

Заполнение после последовательности

Заполнение также может применяться к концу последовательностей, что может быть более подходящим для некоторых проблемных областей.

Заполнение постпоследовательностью можно указать, задав для аргумента «заполнение» значение «post».

При выполнении примера печатаются те же последовательности с добавленными нулевыми значениями.

Последовательности пэдов по длине

Функцию pad_sequences () также можно использовать для дополнения последовательностей до предпочтительной длины, которая может быть длиннее любых наблюдаемых последовательностей.

Это можно сделать, задав аргументу «maxlen» желаемую длину. Затем для всех последовательностей будет выполнено заполнение для достижения желаемой длины, как показано ниже.

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

Усечение последовательности

Длина последовательностей также может быть сокращена до желаемой длины.

Желаемую длину последовательностей можно указать как количество временных шагов с аргументом «maxlen».

Есть два способа усечения последовательностей: путем удаления временных шагов из начала или конца последовательностей.

Усечение до последовательности

Метод усечения по умолчанию заключается в удалении временных шагов из начала последовательностей. Это называется усечением перед последовательностью.

В приведенном ниже примере последовательности усекаются до желаемой длины 2.

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

Усечение пост-последовательности

Последовательности также можно обрезать, удалив временные интервалы в конце последовательностей.

Такой подход может быть более желательным для некоторых проблемных областей.

Усечение постпоследовательности можно настроить, изменив аргумент «усечение» со значения по умолчанию «pre» на «post» следующим образом:

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

Резюме

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

В частности, вы узнали:

  • Как дополнить последовательности переменной длины фиктивными значениями.
  • Как дополнить последовательности переменной длины до новой желаемой длины.
  • Как обрезать последовательности переменной длины до новой желаемой длины.

У вас есть вопросы о подготовке последовательностей переменной длины?
Задайте свои вопросы в комментариях, и я постараюсь ответить.

Разработайте LSTM для прогнозирования последовательности уже сегодня!

Сети с долгосрочной краткосрочной памятью с Python

Разработайте свои собственные модели LSTM за считанные минуты

... всего несколькими строками кода Python

Узнайте, как в моей новой электронной книге:
Сети с долгосрочной краткосрочной памятью с Python

Это обеспечивает самообучения на такие темы, как:
CNN LSTM, кодировщик-декодер LSTM, генеративные модели, подготовка данных, прогнозирование и многое другое...

Наконец, доведите рекуррентные нейронные сети LSTM до
Ваши проекты прогнозирования последовательности

Пропустите академики. Только результаты.

Посмотрите, что внутри

Вас также может заинтересовать