2017-10-18 129 views
1

我有兩個時間序列A和B:力LSTM Keras使用時間序列依賴性

A: 1,2,3,1,2,3,3,3,1,2,3,3,3 
B: 0,0,1,0,0,1,1,1,0,0,1,1,1 

這種簡單的訓練集說,信號B相關A.其實每次A等於3,在B的同一時間戳,值爲1.

我介紹了上面的例子來解釋我的問題。當我通過使用帶Keras的LSTM預測數據時,我希望模型能夠從系列中理解這種依賴關係。

現在我用這個配置:

model.add(keras.layers.LSTM(hidden_nodes, activation='sigmoid', input_dim=num_features, input_length=window, consume_less="mem")) 
model.add(keras.layers.Dense(num_features, activation='sigmoid')) 

optimizer = keras.optimizers.SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True) 

但我看到LSTM預測值,而時間序列之間的明顯使用依賴性。如果我做一個預測爲5的窗口,以預測未來點:

A: [1,2,3,1,2] 
B: [0,0,1,0,0] 

我希望LSTM給我值3 A和1 B,因爲下面的訓練集說。

問題是,我的網似乎使用的信號沒有給權重的信號依賴關係。

回答

1

您應該只有一個系列具有兩個功能。

如果A和B是列表(不是numpy的數組):

fullSeq = np.array(A + B) 
#this shape is (lenA + lenB,) 

fullSeq = fullSeq.reshape((2,len(A))) 
fullSeq = fullSeq.swapaxes(0,1).reshape((1,len(A),2)) 

#make sure that the resulting array is something like [[[1,0],[2,0],[3,1],...]] 

現在你有num_features=2單個序列。 A和B現在完全依賴。

+0

我這樣做,但它與信號依賴關係有關嗎? – Ghemon

+0

我不明白你的問題。 –

+0

好的,我試着更好地解釋它。另外,如果我按照上面所寫的內容進行操作,看起來網絡並未考慮信號A和信號B之間的依賴關係。 例如,我不能在B(或A)上使用迴歸算法,因爲它們是相關的。 – Ghemon