2016-06-28 15 views
5

Ich habe eine LSTM in Keras, die ich trainiere, um Zeitreihendaten vorherzusagen. Ich möchte, dass das Netzwerk bei jedem Zeitschritt Vorhersagen ausgibt, da es alle 15 Sekunden eine neue Eingabe erhält. Also, mit dem ich kämpfe, ist der richtige Weg, es zu trainieren, so dass es h_0, h_1, ..., h_t als konstanten Strom ausgeben wird, wenn es x_0, x_1, ...., x_t als einen Strom von Eingaben empfängt . Gibt es eine Best Practice dafür?Stream Ausgabe der Vorhersagen in Keras

enter image description here

Antwort

4

Sie können durch das Setzen stateful=True Statusbehaftung in Ihrer LSTM Schichten ermöglichen. Dies ändert das Verhalten des Layers so, dass immer der Status des vorherigen Aufrufs des Layers verwendet wird, anstatt es für jedes layer.call(x) zurückzusetzen.

beispielsweise eine LSTM Schicht mit 32 Einheiten mit Losgröße 1, Sequenzlänge 64 und Merkmalslänge 10:

LSTM(32, stateful=True, batch_input_shape=(1,64,10)) 

Mit diesen aufeinanderfolgenden Aufrufen von predict die vorherigen Zustände verwenden.

+1

Und so .reset_states() wäre die Funktion, um eine neue Sequenz von Eingaben zu starten? Sehr cool, danke! – Rob

+0

Ja. Vergessen zu erwähnen, tut mir leid. – nemo

+0

@nemo Ich habe eine Folgefrage [hier] (http://stackoverflow.com/questions/38313673/lstm-with-keras-for-mini-batch-training-and-online-testing). Würde es dir etwas ausmachen, einen Blick darauf zu werfen? – BoltzmannBrain

Verwandte Themen