首页 文章

具有嵌入层的Keras LSTM自动编码器

提问于
浏览
3

我正在尝试在Keras中构建一个文本LSTM自动编码器 . 我想使用嵌入层,但我不知道如何实现它 . 代码看起来像这样 .

inputs = Input(shape=(timesteps, input_dim))
embedding_layer = Embedding(numfeats + 1,
                            EMBEDDING_DIM,
                            weights=[data_gen.get_embedding_matrix()],
                            input_length=maxlen,
                            trainable=False)

embedded_sequence = embedding_layer(inputs)
encoded = LSTM(num_units)(inputs)

decoded = RepeatVector(timesteps)(encoded)
decoded = LSTM(???, return_sequences=True)(decoded)

sequence_autoencoder = Model(inputs, decoded)

sequence_autoencoder.compile(loss='binary_crossentropy', optimizer='adam')

我不知道如何将输出解码为目标序列(显然是输入序列) .

1 回答

  • 1

    无法在解码器中实现反向嵌入层,因为嵌入层不可微分 . 可能还有其他解决方法:

    • 从嵌入层的输出构造自动编码器到具有相似维度的层 . 然后使用最近邻居或其他算法从那里生成单词序列 .

    • 构造一个非对称自动编码器,使用时间分布层和密集层来减少LSTM输出的维数 .

    希望这会有所帮助 .

相关问题