如何结合独立的CNN和LSTM网络

时间:2020-07-15 10:30:53

标签: tensorflow time-series lstm tf.keras cnn

我目前正在使用tensorflow和keras进行时间序列预测。我构建了一个CNN,该CNN的性能非常好,而基本LSTM的显示效果也非常好。现在,我正在考虑结合这两个网络的优势。我的第一个想法只是将LSTM堆叠在CNN之上,但是不管结果如何差,我都意识到我希望两个网络都能看到Input数据,以便CNN可以了解功能,而LSTM应该专注于与时间相关的方面。尝试构建这种架构的一个好的开始是什么?我还想知道将两个网络的输出连接起来是否有意义?我经常看到这个,但是我不明白为什么这个会有用。我一直在考虑串联两个不同的时间序列,这根本没有意义。我已经访问过与我的问题相关的帖子,但这不是我想要的。独立

1 个答案:

答案 0 :(得分:1)

  • 如果您使用keras,则应使用功能性API或子类化tf.keras.Model来实现模型。
  • 将两个网络的输出并置是很好的(就像不同的人看着同一对象试图弄清楚它是什么->结果会更准确)
  • 如果愿意,可以尝试其他合并功能方法:
    • 具有可学习权重的加权总和是一个很好且简单的选择
    • 使用注意力机制也可以给您带来良好的效果
  • 也许另一个不错的选择是分别训练两个网络,然后将两个世界的结果合在一起。

我附上了一个使用两个分支(CNN和LSTM)的简单模型示例

PolicyDocESIndexSlow

该示例非常简单,并且可能无法作为经过深入研究的体系结构使用。 您应该修改示例,并添加Max pooling,辍学等。