Как передать скрытый вектор в декодер в LSTM Variational Autoencoder - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь написать свой собственный LSTM Variational Autoencoder для текста и хорошо понимаю, как работает этап кодирования и как я выполняю выборку из скрытого вектора Z. Проблема в том, как мне передать Z декодеру. Для ввода в декодер у меня есть стартовый токен <s>, который оставляет скрытое состояние h, и состояние ячейки c для ячейки LSTM в декодере.

Должен ли я сделать оба начальных состояния h и c равными Z, только одно из них или что-то еще?

1 Ответ

0 голосов
/ 22 января 2019

Используя RepeatVector , вы можете повторить скрытый вывод n раз.Затем, подайте его в LSTM.Вот минимальный пример:

 # latent_dim: int, latent z-layer shape. 
 decoder_input = Input(shape=(latent_dim,)) 

 _h_decoded = RepeatVector(timesteps)(decoder_input)
 decoder_h = LSTM(intermediate_dim, return_sequences=True)
 _h_decoded = decoder_h(_h_decoded)

 decoder_mean = LSTM(input_dim, return_sequences=True)
 _x_decoded_mean = decoder_mean(_h_decoded)

 decoder = Model(decoder_input, _x_decoded_mean)

Это ясно объяснено в Документация Keras .

...