LSTM - использовать deltaTime как функцию? Как обрабатывать неправильные метки времени? - PullRequest
2 голосов
/ 17 октября 2019

Я пытаюсь создать LSTM для классификации последовательностей данных.

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

[[
[deltaX,deltaY,deltaTime],
[deltaX,deltaY,deltaTime],...
],class]

Где отражаются deltaX и deltaYизменение X и Y в данный момент времени deltaTime.
deltaTime не всегда одинаков, он может варьироваться от 40 мс до 50 мс, а иногда и 1000 мс. «Класс» в конце представляет собой двоичную классификацию, которая может быть 0 или 1.

Вопрос 1 (обычный LSTM): Должен ли я включить deltaTime в качестве входных данных функции, если я 'Будете ли использовать базовый LSTM (Keras LSTM)?


Я знаю, что у LSTM есть временные метки, но они имеют фиксированную длину. Я более внимательно посмотрел на phasedLSTM, но, кажется, их больше для двух периодических таймфреймов, которые сдвинуты.


Единственное, что мне удалось встретить, это LSTM с поддержкой времени.

Вопрос 2 (LSTM с учетом времени): Вы бы порекомендовали их для моей проблемы? Если так: есть ли реализация keras, так как я раньше не работал с tenorflow.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

учитывая, что ваш вывод - это всего лишь одна двоичная переменная, я не уверен, что стоит бросить столько технических средств на решение проблемы

пару альтернатив:

  1. преобразовать данные в регулярно выбранный набор x,y координат. просто выберите «хороший» набор времен и соответствующим образом интерполируйте изменения положения (дельта-функция была бы наиболее простой, или вы могли бы сделать линейную, или что-то более специфическое для вашей проблемы). Затем вы можете использовать эту встроенную функцию с гораздо большим разнообразием моделей, например, простой CNN

  2. Гауссовская регрессия процесса будет обрабатывать данные такого рода напрямую, но это совсем другой тип модели. от NN

0 голосов
/ 17 октября 2019

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

  1. В целом LSTM ожидает некоторую регулярность продолжительностимежду последовательными элементами. Итак, чтобы ответить на ваш первый вопрос: вам, вероятно, следует, и, поскольку это не ряды реального времени, вы можете попробовать и другие типы NN. «Вероятно», потому что вы получите реальный ответ, когда будете проверять точность тестового набора с этой функцией и без нее.

  2. T-LSTM - это модель (фактически код, который по-разному модифицирует ваш тренировочный набор и обучает регулярному LSTM), который был предложен для случая точно так же, как и ваш. Он не обновлялся в течение двух лет и может потребовать некоторой модификации для поддержки TF2. Keras сам по себе является High End API и работает поверх множества фреймворков, включая TensorFlow. Вы можете использовать его и запускать через него любые функции TF, хотя я бы порекомендовал использовать tf.keras

. В качестве примечания я бы предложил для вашей проблемы взглянуть на Time Delay Neural. сети. TDNN реализован в TensorFlow, PyTorch и, возможно, во многих других средах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...