@DanielAdiwardana 的答案的详细说明。我们需要为除最后一层之外的所有 LSTM 层添加return_sequences=True 。
将此标志设置为True让 Keras 知道 LSTM 输出应该包含所有历史生成的输出以及时间戳 ( 3D )。因此,下一个 LSTM 层可以进一步处理数据。
如果此标志为false,则 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) 表示具有 10 个类别的分类任务的 one-hot 编码输出。它可以概括为具有“n”个神经元用于具有“n”个类别的分类任务。
如果您使用 LSTM 进行回归(或时间序列),那么您可能有 Dense(1)。所以只给出一个数字输出。