1
我有1025643個條目和72個特徵/屬性的測試數據。我已經用形狀(245,30,72)和形狀(245,)訓練了帶有輸入數據trainX的lstm。另外請注意,我已經指定了後退30步,因此trainX的形狀(245,30,72)。lstm模型的輸出形狀
現在訓練模型後,如果我做
model.output_shape
輸出是:
(無,1)
我的理解是,它將使對測試集進行一步預測。但我希望它是30行的預測,每個未來的步驟,爲測試集中的每一行(如輸出應該有形狀在我的情況是(1025643,30,1))。我需要用數據形狀做些什麼改變?我用tensorflow後端和python 3.6使用keras lstm。
代碼爲我的模式是:
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)
非常感謝:)現在我必須爲測試數據中的每個樣本製作30個時間步以使其具有形狀(無,30,1),因爲模型要求我這樣做?如果我只想提供單行,並且模型輸出了30行(按順序30次),那該怎麼辦?像我的測試數據仍然有形狀(1025643,72)和結果我有形狀(1025643,30,1)。 –
如果我理解正確,你想提供一個單一的時間步驟的輸入,併產生接下來的30個時間步驟的輸出。 LSTM需要每個時間步的輸入。要從單個輸入產生30個時間步的輸出,您可以在每個時間步重複第一個輸入,或者使用LSTM的輸出作爲下一個時間步的輸入(LSTM的輸入維與輸出不匹配,所以後一種選擇對於你的架構來說是不可能的)。 –
是的,重複的想法是有道理的。再次感謝你 :) –