gpt4 book ai didi

machine-learning - LSTM/GRU 自动编码器收敛

转载 作者:行者123 更新时间:2023-11-30 09:43:59 28 4
gpt4 key购买 nike

目标

尝试在多变量时间序列数据集上运行 LSTM 自动编码器:
X_train (200, 23, 178) - X_val (100, 23, 178) - X_test (100, 23, 178)

现状

普通的自动编码器比简单的 LSTM AE 架构可以获得更好的结果。

我对如何使用重复向量包装层有一些疑问,据我所知,它应该简单地重复等于序列长度的最后状态的次数。 LSTM/GRU 单元,以便为解码器层提供输入形状。

模型架构不会出现任何错误,但结果仍然比简单的 AE 差一个数量级,而我期望它们至少是相同的,因为我使用的架构应该更适合时间问题。

首先,这些结果具有可比性吗?

尽管如此,LSTM-AE 的重建误差看起来并不好。 enter image description here

我的 AE 模型:

Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense) (None, 178) 31862
_________________________________________________________________
batch_normalization (BatchNo (None, 178) 712
_________________________________________________________________
dense_1 (Dense) (None, 59) 10561
_________________________________________________________________
dense_2 (Dense) (None, 178) 10680
=================================================================
  • 优化器:sgd
  • 损失:mse
  • 致密层的激活函数:relu

我的 LSTM/GRU AE:

_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 23, 178) 0
_________________________________________________________________
gru (GRU) (None, 59) 42126
_________________________________________________________________
repeat_vector (RepeatVector) (None, 23, 59) 0
_________________________________________________________________
gru_1 (GRU) (None, 23, 178) 127092
_________________________________________________________________
time_distributed (TimeDistri (None, 23, 178) 31862
=================================================================
  • 优化器:sgd
  • 损失:mse
  • gru 层的激活函数:relu

最佳答案

您上面的两个模型似乎没有任何有意义的可比性。第一个模型尝试压缩包含 178 个值的向量。这些向量很可能包含一些冗余信息,因此可以合理地假设您能够压缩它们。

第二个模型尝试通过单个 GRU 层压缩 23 x 178 向量的序列。这是一个参数数量明显较多的任务。重复向量只是获取第 1 个 GRU 层(编码器)的输出并将其输入到第 2 个 GRU 层(解码器)。但随后您采用解码器的单个值。我建议您在第二个 GRU(解码器)中使用 return_sequences=True 而不是 TimeDistributed 层。否则,您会说您期望 23x178 序列由所有具有相同值的元素构成;这必然会导致非常高的错误/没有解决方案。

我建议你退后一步。您的目标是找到序列之间的相似性吗?或者能够做出预测?自动编码器方法更适合相似性任务。为了进行预测,我建议您更多地采用将 Dense(1) 层应用于序列步骤的输出的方法。

您的数据集开放吗?可用的 ?如果可能的话,我很想尝试一下。

关于machine-learning - LSTM/GRU 自动编码器收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54925207/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com