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')
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