问题
在 LSTM 自动编码器中,我的输入数据(59 个特征)在通常位于编码器和解码器之间的潜在向量中减少了多少?
为什么作者在编码阶段中间将特征数从 5 增加到 16。这个问题在LSTM自动编码器结构的图片之后在下面更详细地描述。
我的问题基于文章LSTM Autoencoder for Extreme Rare Event Classification in Keras。您可以查看此 github 存储库中的代码。请参阅这些资源以更好地了解我的问题。
问题详情
- 我的自动编码器模型如下:
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()
输入数据的形状是
X_train_y0_scaled.shape = (11692,5,59)
。这意味着我们有 11692 个批次。每批由 5 行 59 列组成,由于数据是时间序列数据,这意味着 5 天每天收集 59 个特征。自编码器模型总结如下:
- 附带问题:我无法理解为什么此代码的作者将特征数从 5(在“lstm_16”层中)增加到 16(在“lstm_17”层中)。
- 原来的特征数是59,所以第一层的特征数从59减少到5。但是在降维之后,为什么有人要在编码阶段增加维度?!
如果它是一个全连接的自动编码器,很容易看出输入数据的形状在潜在向量中被缩小了多少。例如,在下图中,10 节点长的输入数据被缩减为 3 节点长的潜在向量。
然而,在 LSTM 自动编码器中,我不清楚 59 个特征长向量减少到多长时间。
The layer lstm_18
只有 1 个节点长,而repeat vector
(5,1) 长。这是否意味着 59 特征长向量被缩减为 1 节点长向量?