如何在 keras LSTM 自动编码器中获得学习表示

How to get the learned respresentation in keras LSTM Autoencoder

我有一个多层 LSTM 自动编码器,其输入是一个具有 4 个属性的 20 步时间序列。

    model = Sequential()
    model.add(CuDNNLSTM(128, input_shape=(20, 4), return_sequences=True))  # encode 1
    model.add(CuDNNLSTM(256, return_sequences=True))  # encode 2
    model.add(CuDNNLSTM(512, return_sequences=True))  # encode 3 -- our final vector
    model.add(CuDNNLSTM(256, return_sequences=True))  # decode 1
    model.add(CuDNNLSTM(128, return_sequences=True))  # decode 2
    model.add(TimeDistributed(Dense(4)))
    model.compile(optimizer='adam', loss='mse')

当我将输出层设置为编码层 #3 时,输出的形状为 (1,20,512)。

如何从该层获取形状为 (1,512) 的向量以用作输入时间序列的学习表示?

我说形状是 (1,20,512) 对吗,因为该层为每个时间步生成一个输出向量,在这种情况下我应该使用最后一个输出向量?

由于您设置了 return_sequences=True,因此 LSTM 层将为序列的每个时间步长输出一个向量。

如果您只对最后一个序列元素感兴趣,您可以只使用最后一个 512 向量。 但是,如果您不需要后续图层的处理,您也可以只为您感兴趣的图层设置 return_sequences=False,它会直接输出您想要的形状 (1,512)