矢量表示的时间序列在Keras有状态LSTM自动编码器

时间:2018-02-04 16:58:18

标签: machine-learning neural-network keras lstm autoencoder

我正在Keras中实现一个LSTM自动编码器来获取我的时间序列数据的矢量表示。

我的系列很长,所以我使用有状态的LSTM。 我创建每个系列的非重叠窗口并将它们输入到自动编码器。

见下面的代码。

我不清楚如何获得时间序列的矢量表示:

  1. 该系列的矢量表示是什么?是编码器隐藏状态还是编码器输出?

  2. 每个序列都被分解为窗口,当执行预测时,每个窗口得到一个[encoder_outputs, state_h, state_c]。 哪个窗口包含整个序列的向量表示?这是最后一个窗口吗?第一个?

  3. # 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:]
    

0 个答案:

没有答案