堆叠式LSTM网络如何工作?

问题描述

我在理解堆叠LSTM网络中的细胞流动方面有些困难。我有这个网络:

def make_model(x_train):

    # Create a new linear regression model.
    model = Sequential()
    model.add(Bidirectional(LSTM(units=30,return_sequences=True,input_shape = (x_train.shape[1],1) ) ))
    model.add(Dropout(0.2))
    model.add(LSTM(units= 30,return_sequences=True))
    model.add(Dropout(0.2))
    model.add(LSTM(units= 30,return_sequences=True))
    model.add(Dropout(0.2))
    model.add(LSTM(units= 30))
    model.add(Dropout(0.2))
    model.add(Dense(units = n_future,activation='linear'))
    model.compile(optimizer='adam',loss='mean_squared_error',metrics=['acc'])
    return model

1)第一LSTM层的输入是否进入第二LSTM层?

2)我已经阅读到在LSTM中,我们具有先前的隐藏状态和当前输入作为输入。如果来自第一LSTM层的输入(input_shape)没有进入第二LSTM层,那么来自第二LSTM层的输入是什么?只有隐藏状态?哪个隐藏状态?

解决方法

您要创建的是一个层次网络。是的,从第一个输入到第二个,依此类推。在lstm的情况下,您可以控制来自各层的输入,可以使用return_sequences或return state。

这是一篇解释这一问题的文章

https://www.dlology.com/blog/how-to-use-return_state-or-return_sequences-in-keras/