我对时间序列数据有疑问。我的训练数据集的维度为(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:输入0与lstm_2层不兼容:预期 ndim = 3,找到的ndim = 2,但是没有ndim参数。
答案 0 :(得分:0)
问题在于第一LSTM层返回的形状为(batch_size, 100)
。如果要迭代第二个LSTM层,则可能应该在第一个LSTM层中添加选项return_sequences=True
(然后将返回形状为(batch_size, training_input_data.shape[1], 100)
的对象。
请注意,在第二个LSTM中传递input_shape = (..)
并不是强制性的,因为该层的输入形状是根据第一个LSTM的输出形状自动计算的。
答案 1 :(得分: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')