我正在Keras中实现一个LSTM
自动编码器来获取我的时间序列数据的矢量表示。
我的系列很长,所以我使用有状态的LSTM。 我创建每个系列的非重叠窗口并将它们输入到自动编码器。
见下面的代码。
我不清楚如何获得时间序列的矢量表示:
该系列的矢量表示是什么?是编码器隐藏状态还是编码器输出?
每个序列都被分解为窗口,当执行预测时,每个窗口得到一个[encoder_outputs, state_h, state_c]
。
哪个窗口包含整个序列的向量表示?这是最后一个窗口吗?第一个?
# Builing the Model.
inputs = Input(shape=(batch_size,window_size, input_dim))
encoded = LSTM(latent_dim, stateful=True, batch_input_shape=
(batch_size,window_size, input_dim))(inputs)
decoded = RepeatVector(window_size)(encoded)
decoded = LSTM(input_dim, return_sequences=True, stateful=True,
batch_input_shape=(batch_size,window_size, input_dim))(decoded)
decoded = TimeDistributed(Dense(latent_dim, activation='linear')(decoded)
sequence_autoencoder = Model(inputs, decoded)
encoder = Model(inputs, encoded)
# Predicting using the encoder
encoded_out=encoder.predict(X, batch_size=batch_size)
# For each sequence in X, we take the output of the last window as the
vector representing the entire sequence.
# Is this correct?
seqVector=encoded_out[-batch_size:]