我有一系列序列。我想将它们编码为长度向量encoded_dim。为此,我在 Keras 中使用堆叠 LSTM 制作了一个自动编码器:
inputs = Input(shape=(None, input_dim))
encoded = LSTM(encoded_dim)(LSTM(latent_dim, return_sequences=True)(inputs))
decoded = RepeatVector(timesteps)(encoded)
decoded = Dense(8)(Dense(100)(LSTM(input_dim, return_sequences=True)(decoded)))
sequence_autoencoder = Model(inputs, decoded)
sequence_autoencoder.compile(optimizers.Adam(lr=0.01), loss='mean_squared_error')
sequence_autoencoder.fit(input, input, epochs=3000, batch_size=16, shuffle=False, callbacks=[...], validation_split=.2)
当我将注意力限制在长度序列时,这很有效timesteps。但是,总的来说,我的序列长度不同,因此RepeatVector(timesteps)无法按原样工作。(这也会弄乱批处理,但我已经接受过不错的培训,batch_size=1所以对于我的特定用例,我不太担心。)
在一般 seq2seq 建模的背景下,这里有一个涉及可变长度输入序列和批处理的富有成果的对话。不幸的是,无需担心检索固定大小的编码。
非常感谢任何建议/代码片段。