2015-11-20 7 views
3

Моя проблема: У меня есть последовательность сложных состояний, и я хочу предсказать состояния будущего.Seq2Seq для прогнозирования сложных состояний

: У меня есть последовательность состояний. Каждая последовательность может иметь переменную длину. Каждое состояние является моментом во времени и описывается несколькими атрибутами: [att1, att2, ...]. Где каждый атрибут представляет собой число между интервалом [[0..5], [1..3651], ...]

Пример (и документ) Seq2Seq основан на том, что каждое состояние (слово) является взятые из их словаря. Таким образом, каждое государство имеет около 80 000 возможностей. Но как бы вы представляли каждое состояние, когда оно было взято из набора векторов, а множество является только каждой возможной комбинацией атрибутов.

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

ответ

4

Могу ли я предложить перефразировать и разделить ваш вопрос на две части? Первое - это, по сути, общее задание машинного обучения/LSTM, не зависящее от tensorflow: как использовать LSTM для прогнозирования, когда элементы последовательности являются общими векторами, а второй - как представлять это в тензорном потоке. Для первого - нет ничего действительно волшебного, чтобы сделать там.

Но очень быстрый ответ: вы действительно просто пропустили часть поиска внедрения seq2seq. Вы можете подавать плотные тензоры в соответствующую модифицированную версию - ваше состояние представляет собой просто плотное векторное представление состояния. Это то же самое, что выходит из поиска встраивания.

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

Если вы посмотрите на line 139 of seq2seq.py вы увидите, что embedding_rnn_decoder принимает в 1D серии вещей, чтобы решить (размерность элементов в пакете), но затем использует поиск вложения, чтобы превратить его в batch_size * клетки. тензор input_size. Вы хотите напрямую ввести тензор batch_size * cell.input_size в RNN, пропустив шаг внедрения.

+0

Я действительно пропустил часть о вложении. Итак, с помощью этого метода вы предполагаете, что каждое состояние, представленное вектором, является тем же самым вектором, который вы найдете при использовании вложения? – Milan

+2

Ну, это не «одно и то же», но цель внедрения заключается в том, чтобы заняться очень скудным пространством (слова - если вы думаете об этом, определяя, какое именно слово оно представляет собой вектор с 80 000 экземплярами со всеми нулями и один) в гораздо более плотное пространство, такое как плотный вектор из 8 поплавков или что-то еще, что может быть легче с помощью RNN. Он также имеет преимущество - с правильными вложениями - превращать семантически похожие слова в числовые аналогичные векторы. У вас уже есть плотный вектор функций, поэтому вы можете просто напрямую подключить его к RNN. – dga

 Смежные вопросы

  • Нет связанных вопросов^_^