我正在嘗試在Keras的時間序列數據上訓練ANN。我有三個數據向量被分解爲滾動窗口序列(即向量l)。神經網絡爲所有輸入產生類似的模式
np.array([l[i:i+window_size] for i in range(len(l) - window_size)])
靶載體類似地加窗,從而神經網絡輸出的時間的步驟的下一個數WINDOW_SIZE目標矢量的預測。所有數據都使用min-max縮放器進行標準化。它以形狀=(nb_samples,window_size,3)形式輸入神經網絡。這裏是3個輸入向量的圖。
我已經成功從ANN鼓起的唯一輸出如下情節。藍色目標矢量,紅色預測(繪圖放大,使預測模式更清晰)。預測向量以window_size間隔繪製,因此每個重複模式都是來自網絡的一個預測。
我已經嘗試了許多不同的模型架構,數量的時代,激活功能,短而胖的網絡,瘦,高。這是我目前的(這裏有一點)。
Conv1D(64,4, input_shape=(None,3)) ->
Conv1d(32,4) ->
Dropout(24) ->
LSTM(32) ->
Dense(window_size)
但是我嘗試的任何東西都不會影響輸出這種重複模式的神經網絡。我必須誤解Keras的時間序列或LSTM。但是我現在非常失落,所以任何幫助都非常感謝。我已將完整的代碼附加到此存儲庫。
https://github.com/jaybutera/dat-toy
感謝您的響應。自從我提出這個問題以來,我一直在編輯代碼,這是一個錯誤。事情是我想要預測未來一個多步的時間。當我問這個問題的時候,輸入的形狀是(18830,30,8),正如你所描述的那樣,但是輸出是無意義的。是否有另一種預測未來一個以上時間步驟的方法? – jay
@jay我不太熟悉序列預測,但我添加了一個簡單的例子,試圖預測一些短序列。隨機生成的數據不是真正的序列,因此沒有可以學習的模式,所以輸出並不意味着很多,但是可以看到一些結果。 – Nigel
@jay實際上,我稍微改進了這個例子,它現在確實學到了一些東西,儘管數據仍然不是真正的順序,所以前5個輸入時間步可能實際上並不能幫助模型學習關於最後5個輸出時間步的任何事情。也不是說,如果你的輸入和輸出序列的長度相同,你不需要'RepeatVector'業務,並且可以在整個模型中保持順序。 – Nigel