2017-08-29 4 views
1

Je:LSTM-Keras prend-il en compte les dépendances entre séries chronologiques?

  • séries chronologiques multiples en INPUT
  • point de séries chronologiques de prévision de la production

Comment être sûr que le modèle de prédire les données en utilisant les dépendances entre toutes les séries chronologiques en entrée?

Modifier 1
Mon modèle actuel:

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

Pouvez-vous ajouter votre modèle actuel? – DJK

Répondre

1

Par couche par défaut LSTM dans keras (et tout autre type de couche récurrente) n'est pas stateful, et par conséquent, les états sont remis à zéro chaque fois qu'un nouveau l'entrée est introduite dans le réseau. Votre code utilise cette version par défaut. Si vous le souhaitez, vous pouvez le définir en spécifiant stateful=True dans la couche LSTM, puis les états ne seront pas réinitialisés. Vous pouvez en savoir plus sur la syntaxe pertinente here et this blog post fournit plus d'informations sur le mode avec état.

Voici un exemple de la syntaxe correspondante, tirée de 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

Si j'utilise stateful alors comment puis-je gérer la taille du lot? – Ghemon

+0

@Ghemon voir ma réponse mise à jour. –

+0

Dans ce cas, batch_size est égal à 1 mais je ne pense pas que cela corresponde à mon problème. Qu'est-ce que tu penses? – Ghemon