【发布时间】:2017-12-06 12:02:02
【问题描述】:
在堆叠RNN时,Keras中必须将return_sequences参数设置为True。
例如在 Keras 中,
lstm1 = LSTM(1, return_sequences=True)(inputs1)
lstm2 = LSTM(1)(lstm1)
为每个堆叠的 RNN 层保留输入空间的维数有点直观,但是,我并不完全相信。
有人可以(数学)解释原因吗?
谢谢。
【问题讨论】:
在堆叠RNN时,Keras中必须将return_sequences参数设置为True。
例如在 Keras 中,
lstm1 = LSTM(1, return_sequences=True)(inputs1)
lstm2 = LSTM(1)(lstm1)
为每个堆叠的 RNN 层保留输入空间的维数有点直观,但是,我并不完全相信。
有人可以(数学)解释原因吗?
谢谢。
【问题讨论】:
循环层的输入形状是:
(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 不存在。
【讨论】: