在Keras中连接LSTM的输出

在Keras中连接LSTM的输出,keras,nlp,deep-learning,lstm,recurrent-neural-network,Keras,Nlp,Deep Learning,Lstm,Recurrent Neural Network,我打算将时间步的所有输出从LSTM馈送到完全连接的层。但是,以下代码失败。如何通过连接timestep的每个输出,将LSTM的3D输出减少到2D X = LSTM(units=128,return_sequences=True)(input_sequence) X = Dropout(rate=0.5)(X) X = LSTM(units=128,return_sequences=True)(X) X = Dropout(rate=0.5)(X) X = Concatenate()(X) X =

我打算将时间步的所有输出从LSTM馈送到完全连接的层。但是,以下代码失败。如何通过连接timestep的每个输出,将LSTM的3D输出减少到2D

X = LSTM(units=128,return_sequences=True)(input_sequence)
X = Dropout(rate=0.5)(X)
X = LSTM(units=128,return_sequences=True)(X)
X = Dropout(rate=0.5)(X)
X = Concatenate()(X)
X = Dense(n_class)(X)
X = Activation('softmax')(X)
可以使用该层将LSTM层的三维输出展平为二维形状


作为旁注,最好使用的参数是
dropout
recurrential\u dropout
而不是将
dropout
层直接用于重复层。

除了@todays回答:
似乎您只想使用return_序列将其连接到一个密集层中。如果您还没有使用return_sequences=False进行尝试,我建议您这样做。返回序列的主要目的是叠加LSTM或进行seq2seq预测。在您的情况下,仅使用LSTM就足够了。

谢谢!你能解释一下为什么使用它们作为LSTM层的参数更好吗?@XINLIU本质上,在重复层中应用辍学的正确方法是在每个时间步使用相同的辍学掩码。它不应随时间变化,因为它会阻碍学习过程。我想亚林·加尔在他的电影里第一次展示了这一点。您可以设置两个参数(注意它们是不同的东西),并将结果与使用退出层时得到的结果进行比较。谢谢!在Keras中有一个CuDNNLSTM层。但是,在CuDNNLSTM层中没有“辍学”或“经常性辍学”参数。谢谢您的建议。我尝试了return_sequences=False,所以我可能想看看这种方法的效果如何。