0

我有一个关于时间序列数据的问题。我的训练数据集的维度为 (3183, 1, 6)

我的模型:

model = Sequential()
model.add(LSTM(100, input_shape = (training_input_data.shape[1], training_input_data.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(100, input_shape = (training_input_data.shape[1], training_input_data.shape[2])))
model.add(Dense(1))
model.compile(optimizer = 'adam', loss='mse')

我在第二个 LSTM 层收到以下错误:

ValueError: Input 0 is in compatible with layer lstm_2: expected ndim=3, found ndim=2 但是没有 ndim 参数。

4

2 回答 2

0

问题是第一个 LSTM 层返回的东西是 shape (batch_size, 100)。如果您想使用第二个 LSTM 层进行迭代,您可能应该return_sequences=True在第一个 LSTM 层中添加该选项(然后将返回一个 shape 对象(batch_size, training_input_data.shape[1], 100)

请注意,传入input_shape = (..)第二个 LSTM 不是强制性的,因为该层的输入形状是根据第一层的输出形状自动计算的。

于 2019-09-30T10:28:00.097 回答
0

您需要设置参数 return_sequences=True 来堆叠 LSTM 层。

model = Sequential()
model.add(LSTM(
    100,
    input_shape = (training_input_data.shape[1], training_input_data.shape[2]),
    return_sequences=True
))
model.add(Dropout(0.2))
model.add(LSTM(100, input_shape = (training_input_data.shape[1], training_input_data.shape[2])))
model.add(Dense(1))
model.compile(optimizer = 'adam', loss='mse')

另请参阅如何在 keras 中堆叠多个 lstm?

于 2019-09-30T10:29:29.910 回答