lstm模型的Output_shape

时间:2017-10-17 19:35:49

标签: python-3.x time-series keras lstm forecasting

我有1025643个条目和72个功能/属性的测试数据。我训练了一个带有输入数据trainX的lstm,其形状为(245,30,72),trainY为shape(245,)。另请注意,我指定回溯是30步,因此(245,30,72)trainX的形状。

如果我做了

,那么在训练模型之后

model.output_shape

输出结果为:

  

(无,1)

据我所知,它将为测试集提供一步预测。但我希望它是30行预测,每个未来步骤一个,对于测试集中的每一行(如输出应该在我的情况下具有形状(1025643,30,1))。我需要对数据形状进行哪些更改?我正在使用keras lstm和tensorflow后端和python 3.6。

我的模型的代码是:

model = Sequential()
model.add(LSTM(100, return_sequences=True, input_shape = (trainX.shape[1], trainX.shape[2])))
model.add(LSTM(100, return_sequences = False))
model.add(Dense(1, activation='linear'))

model.compile(loss='mse', optimizer='adam')

model.fit(trainX, trainY, epochs=50, shuffle=False, verbose=1)

1 个答案:

答案 0 :(得分:1)

最后一个LSTM图层上的$flags = Item::with('reportedItem')->find($item_id); 参数导致LSTM仅在所有30个时间步之后返回输出。如果您想要30个输出(每个时间步之后一个),请在最后一个LSTM图层上使用return_sequences=False,这将导致输出形状为return_sequences=True

有关Keras中LSTM的更详细说明,请参阅here