@DanielAdiwardana的答案的详细说明。我们需要为除最后一层之外的所有LSTM层添加return_sequences = True。
将此标志设置为True可让Keras知道LSTM输出应包含所有历史生成的输出以及时间戳(3D)。 因此,下一个LSTM层可以进一步处理数据。
如果此标志为假,则LSTM仅返回最后一个输出(2D)。 这样的输出对于另一个LSTM层来说还不够好。
# expected input data shape: (batch_size, timesteps, data_dim)
model = Sequential()
model.add(LSTM(32, return_sequences=True,
input_shape=(timesteps, data_dim))) # returns a sequence of vectors of dimension 32
model.add(LSTM(32, return_sequences=True)) # returns a sequence of vectors of dimension 32
model.add(LSTM(32)) # return a single vector of dimension 32
model.add(Dense(10, activation='softmax'))
在侧面注意:::添加了最后一个密集层,以获取用户所需格式的输出。 这里的Dense(10)表示将使用softmax激活生成10个不同的类输出。
如果您将LSTM用于时间序列,则应具有Dense(1)。 因此只给出一个数字输出。