2017-08-23 476 views
2

我已經花了幾個月閱讀無盡的帖子,我仍然感到困惑,因爲我最初是。希望有人能幫助。使用帶Keras的LSTM神經網絡預測天氣數據

問題:我想用時間序列來預測特定位置的天氣數據。

設置:

X1X2是含有指數的每日記錄10年(在每個矢量3650的合計值)這兩種載體。

Y是紐瓦克機場(T)的溫度時間序列,每天爲10年(3650天)。

有一個強烈的情況下,X1X2可以用作Y的預測。所以,我打破一切到100天窗口和創建以下文件:

X1 = (3650,100,1) 
X2 = (3650,100,1) 

,使得窗口1包括從價值觀到t=0t=99,窗口2包括從t=1t=100等值(假設我有足夠的額外的數據,我們仍然有3650窗口)。

我已經從其他教程學到的是,進入Keras我應該這樣做:

X = (3650,100,2) = (#_of_windows,window_length,#_of_predictors)我獲得通過合併X1X2

然後,我有這樣的代碼:

model = Sequential() 
model.add(LSTM(1,return_sequences=True,input_shape=(100,2))) 

model.add(LSTM(4)) 
model.add(Dropout(0.2)) 

model.compile(loss='mean_square_error',optimizer='rmsprop',shuffle=True) 
model.fit(X,Y,batch_size=128,epochs=2) # Y is shape (3650,) 

predictions = model.predict(?????????????) 

所以我的問題是,我該如何建立model.predict面積找回的N天數預測的未來?有時我可能需要2天,有時我可能需要2周。我只需要返回N的值(形狀:[N,]),我不需要返回窗口或類似的東西。

非常感謝!

+0

因此,對於第一個輸入,您的Y值是't = 100'... – DJK

回答

2

您可以預測的唯一格式是您在其中訓練模型的格式。如果我理解正確,則按如下方式訓練模型:

您使用了大小爲100的窗口(即時間爲T-99,T-98,...,T的功能)來預測目標在時間T處的值。

如果確實如此,那麼您可以對模型執行的唯一操作是相同類型的預測。也就是說,您可以提供100天的功能值,並要求模型預測100中最後一天的目標價值。

如果您希望它能夠預測N天,你必須相應地訓練你的模型。也就是說,Y中的每個元素應由N天的序列組成。 Here是一篇博客文章,介紹如何做到這一點。

+0

您認爲如何在N天的開放模式下運行它? – user3684792

+0

@ user3684792你也可以這樣做,但是你需要提供相應的功能。也就是說,第一天你需要在時間T-99,T-98,... T(這裏我用T表示第一天)提供功能。第二天,您需要在時間T-98,T-97,...,T + 1提供功能。對於其他日子中的每一天,直到N也是如此。輸入的格式應該與您用於培訓的格式相同。 –

+0

你對這個VS再訓練的準確性有直覺嗎?我想我會認爲它會更糟 – user3684792