输入数据在 LSTM 自动编码器中减少了多少

数据挖掘 喀拉斯 lstm 自动编码器
2022-02-13 23:41:38

问题

  1. 在 LSTM 自动编码器中,我的输入数据(59 个特征)在通常位于编码器和解码器之间的潜在向量中减少了多少?

  2. 为什么作者在编码阶段中间将特征数从 5 增加到 16。这个问题在LSTM自动编码器结构的图片之后在下面更详细地描述。

我的问题基于文章LSTM Autoencoder for Extreme Rare Event Classification in Keras您可以查看此 github 存储库中的代码。请参阅这些资源以更好地了解我的问题。

问题详情

  1. 我的自动编码器模型如下:
lstm_autoencoder = Sequential()

# Encoder
lstm_autoencoder.add(LSTM(timesteps, activation='relu', input_shape=(timesteps, n_features), return_sequences=True))
lstm_autoencoder.add(LSTM(16, activation='relu', return_sequences=True))
lstm_autoencoder.add(LSTM(1, activation='relu'))
lstm_autoencoder.add(RepeatVector(timesteps))

# Decoder
lstm_autoencoder.add(LSTM(timesteps, activation='relu', return_sequences=True))
lstm_autoencoder.add(LSTM(16, activation='relu', return_sequences=True))
lstm_autoencoder.add(TimeDistributed(Dense(n_features)))

lstm_autoencoder.summary()
  1. 输入数据的形状是X_train_y0_scaled.shape = (11692,5,59)这意味着我们有 11692 个批次。每批由 5 行 59 列组成,由于数据是时间序列数据,这意味着 5 天每天收集 59 个特征。

  2. 自编码器模型总结如下:

自动编码器结构

- 附带问题:我无法理解为什么此代码的作者将特征数从 5(在“lstm_16”层中)增加到 16(在“lstm_17”层中)。
- 原来的特征数是59,所以第一层的特征数从59减少到5。但是在降维之后,为什么有人要在编码阶段增加维度?!

  1. 如果它是一个全连接的自动编码器,很容易看出输入数据的形状在潜在向量中被缩小了多少。例如,在下图中,10 节点长的输入数据被缩减为 3 节点长的潜在向量。

    fc_autoencoder

  2. 然而,在 LSTM 自动编码器中,我不清楚 59 个特征长向量减少到多长时间。The layer lstm_18只有 1 个节点长,而repeat vector(5,1) 长。这是否意味着 59 特征长向量被缩减为 1 节点长向量?

0个回答
没有发现任何回复~