[英]Feature extraction for Timeseries LSTM
我想將時間序列輸入LSTM中以執行預測。 可以說我有10000個樣本。 現在,為了將時間序列輸入到我的LSTM中,我將其重塑為(樣本,時間步長,功能)。 就我而言,我使用timesteps = 50來創建子序列並執行t + 1的預測。 所以我最終得到x.shape=(9950,50,1)
。 到現在為止還挺好。
我的模特
model= Sequential()
model.add(LSTM(50,return_sequences=True,input_shape=(50,1)))
model.add(Dense(out_dim, activation = 'sigmoid'))
model.compile(loss='mse', optimizer='adam')
現在,我想創建人造特征,例如,我想將信號的ftf作為特征。 如何將其輸入LSTM? 僅計算fft,將其附加到Dataframe並一起重塑形狀是否合法,所以我最終得到(9950,50,2)
?
問題基本上是:
提前致謝
您從輸入數據計算出的任何其他功能都只是另一個功能,因此:
input_shape=(50, 1+extra_features)
並且必須在將它們傳遞給模型之前對其進行串聯。 所以是的,輸入形狀現在將是(9950, 50, 2)
。 您也可以編寫自定義圖層來計算模型中的這些特征,但是模型每次都會對其進行計算。 如果您先驗計算,則優點是可以保存/緩存它。
如果您具有非時間序列功能,那么現在您需要使用功能性API並具有多個輸入:1是時間序列,而另一個則不是:
series_in = Input(shape=(50, 2))
other_in = Input(shape(extra_features,)) # not a timeseries just a vector
# An example graph
lstm_out = LSTM(128)(series_in)
merged = concatenate([lstm_out, other_in])
out = Dense(out_dim, activation='sigmoid')(merged)
model = Model([series_in, other_in], out)
model.compile(...)
在這種情況下,我們有2個模型輸入,可以在任何點使用輔助功能。 在該示例中,我在最終的Dense層之前合並以輔助謂詞以及LSTM提取的時間序列特征。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.