2016-07-14 6 views
0

Ich baue ein LSTM mit Keras für Zeitreihenvorhersage, aber ich möchte, dass das Modell in Mini-Batches (Fenstern) trainiert und Vorhersagen online macht, wie beschrieben here. Dies liegt daran, dass die Daten jeweils in einem Datensatz gestreamt werden. Bei einer Fenstergröße von 500 beispielsweise wird das Modell zu den Zeitpunkten 500 in den Schritten 1-500 trainiert und versucht nun, 501, dann 502, 503 usw. vorherzusagen. Das Modell wird bis zum Zeitpunkt 1000 nicht erneut trainiert.LSTM-Vorhersagen erhöhen sich mit jedem Trainingsstapel

Aber die Ergebnisse sind ungerade, wo die vorhergesagten Werte mit jedem Trainingsfenster zunehmen, wie in this plot gezeigt. Irgendwelche Ideen, was hier falsch ist?

Ich habe eine kleine Architektur:

layers = {'input': inputDims, 'hidden1': 35, 'hidden2': 35, 'output': 1} 
model = Sequential() 
model.add(LSTM(
    input_length=self.sequenceLength, 
    input_dim=self.layers['input'], 
    output_dim=self.layers['hidden1'], 
    return_sequences=True) 
model.add(Dropout(0.2)) 
model.add(LSTM(
    self.layers['hidden2'], 
    return_sequences=False) 
model.add(Dropout(0.2)) 
model.add(Dense(output_dim=self.layers['output'])) 
self.model.add(Activation('linear')) 
model.compile(loss='mse', optimizer='rmsprop') 

Antwort

0

Dies ist kein Problem Ihrer spezifischen Implementierung, sondern eine Inkarnation eines konzeptionellen Thema LSTMs mit langen Zeitreihen sein könnte. Ein guter Ausgangspunkt ist das Papier Learning to forget: Continual prediction with LSTM. Insbesondere beobachten die Autoren, dass

[...] auch LSTM richtig sicher sehr lange oder kontinuierliche Zeitreihen lernen, nicht zu verarbeiten, die in entsprechende Ausbildung Teilfolgen a priori nicht segmentiert sind

und dass

[...] Zellzustände sc neigen oft dazu, linear während der Darstellung einer Zeitreihe zu wachsen [...]

+0

Ah das ist ein guter Punkt, danke. Ich werde versuchen, den Status des Modells an verschiedenen Punkten im Datenstrom zurückzusetzen. Ich kann auch ein Statefule LSTM-Modell mit Keras bauen, das hier gut funktionieren kann. – BoltzmannBrain

Verwandte Themen