Состояние ячейки в DA-RNN - PullRequest
0 голосов
/ 08 июля 2019

Я хочу реализовать DA-RNN в этой статье . На странице 3 исследовательской работы рассказывается о сети кодировщиков. В частности, я хочу реализовать следующие уравнения:

enter image description here

Я хочу подтвердить, что в приведенном выше уравнении мне требуется состояние ячейки s на каждом временном шаге? Обычно в RNN нам просто нужно состояние ячейки с предыдущего временного шага. Так что я имею в виду, что если у нас есть пакет из 5 временных меток, мы используем скрытое состояние h на всех временных шагах от 1 to 5 и используем состояние ячейки s только с 5-го временного шага (и не для всех временных шагов).

Функция out,s = dynamic_rnn в тензорном потоке также дает мне этот вывод, где out будет иметь скрытые состояния, вычисленные на каждом временном шаге, а s будет кортежем c и h на последнем временном шаге. Например, если мой ввод имеет размер batch_size x max_timestep x num_features и, скажем, max_timestep=5, тогда s.c и s.h будут состоять из состояния ячейки и скрытого состояния с 5-го временного шага, а не для временных шагов 1,2,3,4. Однако в статье общее обозначение - состояние ячейки s во время t-1. Поэтому, если мы говорим о 5 временных шагах, нам нужно состояние ячейки s при временных шагах 1,2,3,4, которое я не могу получить с помощью функции dynamic_rnn.

Итак, подведем итог

  1. верно ли мое предположение, что мне нужно состояние ячейки s для всех временных шагов, чтобы реализовать приведенное выше уравнение на изображении?
  2. Если да, как я могу сделать это в tenorflow? Должен ли я написать свою собственную оболочку LSTM?

Обновление:

Этот ответ решил мою проблему. Я обнаружил, что прямой функции для получения состояний ячеек на каждом временном шаге нет, однако мы можем обернуть ячейку RNN и просто передать ее в качестве входных данных для функции dynamicRNN в tf.

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