如何在LSTM变分自动编码器中将潜在矢量传递给解码器

时间:2019-01-22 13:17:10

标签: tensorflow machine-learning deep-learning lstm autoencoder

我正在尝试为文本编写自己的LSTM变分自动编码器,并且已经很好地理解了编码步骤的工作方式以及我如何对潜矢量Z进行采样。现在的问题是我应该如何将Z传递给解码器。对于解码器的输入,我有一个开始令牌<s>,该令牌保留了隐藏状态h和解码器中LSTM单元的单元状态c

我应该使初始状态hc等于Z,还是其中之一,还是其他?

1 个答案:

答案 0 :(得分:1)

使用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 documentation中有清楚的解释。