@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)表示将使用softmax激活生成10个不同的类输出。
如果您将LSTM用于时间序列 ,则应具有Dense(1)。因此只给出一个数字输出。
0
我正在使用深度学习库keras,并尝试没有运气就堆叠了多个LSTM。下面是我的代码
上面的代码在第三行中返回错误
Exception: Input 0 is incompatible with layer lstm_28: expected ndim=3, found ndim=2
输入X是形状的张量(100,250,50)。我在张量流后端上运行keras