LSTM / GRU自动编码器收敛

发布于 2021-01-29 16:12:21

目标

我在尝试在我的时间序列数据集上创建高效的自动编码器时遇到了一个奇怪的情况:
X_train (200, 23, 178) X_val (100, 23, 178) X_test(100, 23, 178)

现在的情况

在时间序列数据集上,使用简单的自动编码器比使用简单的LSTM AE可获得更好的结果。
我对 重复矢量 包装器层的使用有些担心,据我了解,该层应该重复多次,例如序列长度为LSTM / GRU单元的最后状态,以适应输入形状解码器层。

该模型不会出现任何错误,但结果仍然比简单的AE差一个数量级,而我希望至少与使用适当适合领域问题的体系结构相同。然而,重建看起来并不好,只是噪音。在此处输入图片说明

我的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
  • 损失:毫秒
  • 致密层激活功能:露露

我的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
  • 损失:毫秒
  • gru层的激活功能:relu

使用这些循环图层时,我是否在某些假设下犯了一些大错误?或者您对如何调试此方法有什么建议?

关注者
0
被浏览
209
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您上面的2个模型在某种意义上似乎不具有可比性。第一个模型正在尝试压缩178个值的向量。这些向量很可能包含一些冗余信息,因此合理地假设您将能够对其进行压缩。

    第二个模型正在尝试通过单个GRU层压缩23 x
    178个向量的序列。这是具有大量参数的任务。重复向量仅获取第一GRU层(编码器)的输出,并将其输入到第二GRU层(解码器)的输入。但是随后您需要使用解码器的单个值。建议您return_sequences=True在第二个GRU(解码器)中使用,而不要使用TimeDistributed层。否则,您是在说23x178序列是由均具有相同值的元素构成的。必须导致很高的错误/无法解决。

    我建议您退后一步。您的目标是寻找序列之间的相似性吗?还是能够做出预测?对于相似性任务,最好使用自动编码器方法。为了做出预测,我建议您更着重于在序列步骤的输出中应用Dense(1)层的方法。

    您的数据集是否开放?有空吗?如果可以的话,我很想尝试一下。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看