2017-08-29 99 views
1

我:LSTM-Keras是否考慮了時間序列之間的依賴關係?

  • 多個時間序列作爲輸出輸入
  • 預測時間序列點

如何能夠確保該模型通過使用輸入的所有時間序列之間的相關預測數據?

編輯1
我的當前模型:

model = Sequential() 
model.add(keras.layers.LSTM(hidden_nodes, 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) 
+0

你可以添加你當前的模型? – DJK

回答

1

通過keras默認LSTM層(以及任何其他類型的經常性層的)是無狀態的,因此,狀態復位每次一個新的輸入被饋入網絡。你的代碼使用這個默認版本。如果需要,可以通過在LSTM層中指定stateful=True來使其成爲有狀態,然後狀態不會被重置。您可以閱讀關於相關語法here的更多信息,並且this blog post提供有關有狀態模式的更多信息。

下面是相應的語法的一個例子,從here採取:

trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1)) 
testX = numpy.reshape(testX, (testX.shape[0], testX.shape[1], 1)) 
# create and fit the LSTM network 
batch_size = 1 
model = Sequential() 
model.add(LSTM(4, batch_input_shape=(batch_size, look_back, 1), stateful=True)) 
model.add(Dense(1)) 
model.compile(loss='mean_squared_error', optimizer='adam') 
for i in range(100): 
    model.fit(trainX, trainY, epochs=1, batch_size=batch_size, verbose=2, shuffle=False) 
    model.reset_states() 
# make predictions 
trainPredict = model.predict(trainX, batch_size=batch_size) 
model.reset_states() 
testPredict = model.predict(testX, batch_size=batch_size) 
+0

如果我使用有狀態,那麼如何管理批量大小? – Ghemon

+0

@Ghemon看到我更新的答案。 –

+0

在這種情況下,batch_size等於1,但我認爲不適合我的問題。你怎麼看? – Ghemon