为什么要在堆叠的RNN中返回序列?

时间:2017-12-06 12:02:03

标签: keras sequence lstm rnn

在堆叠RNN时,必须在Keras中将return_sequences参数设置为True

例如在Keras,

lstm1 = LSTM(1, return_sequences=True)(inputs1)
lstm2 = LSTM(1)(lstm1)

为每个堆叠的RNN图层保留输入空间的维度有点直观,但是,我并不完全相信。

有人(数学)可以解释原因吗?

感谢。

1 个答案:

答案 0 :(得分:3)

循环图层的输入形状为:

  • (number_of_sequences, time_steps, input_features)

这对于周期性图层是绝对必需的,因为如果有时间步骤,则只能有任何重复性。

现在,比较"输出"每种情况下的复发层数:

  • return_sequences=True - (number_of_sequences, time_steps, output_features)
  • return_sequences=False - (number_of_sequences, output_features)

如果没有return_sequences=True,则会消除时间步长,因此,无法将其输入到循环图层中,因为没有足够的尺寸和最重要的尺寸,time_steps不是当下。