【发布时间】:2021-04-12 15:02:59
【问题描述】:
我正在开发一个使用 MLP 来检测多元时间序列中的异常的自动编码器。为了简化问题,我开始只使用一个系列变量。
单变量案例
我应用它的方式是将时间序列分解成片段,然后将这些片段呈现给网络。例如,我的系列由 1000 个点组成,我将其分成 50 个长度为 20 的子系列。每个子系列都成为学习网络的示例。
DAE input_shape 应该是什么?我看到shape=(20, ) 和shape=(20,1) 是有区别的。我把我一直在处理的 DAE 代码留在下面。以及DAE最后一层的格式应该是怎样的?当我使用只有 1 个神经元的输出层时,模型可以正常工作,为什么?
model = keras.Sequential([
### ENCODING ###
layers.Input(shape=(df_train.shape[1], df_train.shape[2])),
# or ?
#layers.Input(shape=(df_train.shape[1],)),
layers.Dense(16, activation='sigmoid'),
layers.Dropout(rate=0.1),
layers.Dense(8, activation='sigmoid'),
### LATENT SPACE
layers.Dense(4, activation='sigmoid'),
### DECODING ###
layers.Dense(8, activation='sigmoid'),
layers.Dropout(rate=0.1),
layers.Dense(16, activation='sigmoid'),
layers.Dense(1, activation='sigmoid')
])
多变量案例
考虑多变量情况,我有 16 个时间序列。输入形状和输出层看起来如何?
【问题讨论】:
标签: python neural-network time-series autoencoder anomaly-detection