LSTM自动编码器Keras可变批量大小

时间:2018-11-07 16:31:38

标签: lstm keras

我有一系列序列。我想将它们编码为长度为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建模的情况下,进行了富有成果的对话here,涉及可变长度的输入序列和批处理。不幸的是,那里没有检索固定大小编码的问题。

非常感谢任何建议/代码段。

0 个答案:

没有答案