Wie trainieren Sie ein RNN mit LSTM-Zellen für die zeitreihenvorhersage
Ich bin derzeit versuchen zu bauen ein einfaches Modell für die Vorhersage von Zeitreihen. Das Ziel wäre, um das Modell zu trainieren, mit einer Sequenz, so dass das Modell in der Lage ist, zur Prognose zukünftiger Werte.
Ich bin mit tensorflow und lstm-Zellen zu tun. Das Modell trainiert wird mit abgeschnitten, backpropagation through time. Meine Frage ist, wie die Struktur der Daten für das training.
Zum Beispiel nehmen wir an, wir wollen lernen, das gegebene Sequenz:
[1,2,3,4,5,6,7,8,9,10,11,...]
Und wir entrollen das Netzwerk für num_steps=4
.
Option 1
input data label
1,2,3,4 2,3,4,5
5,6,7,8 6,7,8,9
9,10,11,12 10,11,12,13
...
Option 2
input data label
1,2,3,4 2,3,4,5
2,3,4,5 3,4,5,6
3,4,5,6 4,5,6,7
...
Option 3
input data label
1,2,3,4 5
2,3,4,5 6
3,4,5,6 7
...
Option 4
input data label
1,2,3,4 5
5,6,7,8 9
9,10,11,12 13
...
Jede mögliche Hilfe würde geschätzt.
InformationsquelleAutor der Frage Jakob | 2016-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem ich mehrere LSTM-Einführung blogs z.B. Jakob Aungiers'option 3 scheint die richtige für Staatenlose LSTM.
Wenn Ihr LSTMs merken müssen Daten länger her als deine
num_steps
können Sie Ihre Bahn in einer effektiven Art und Weise - für eine Keras Beispiel sehen Philippe Remy ' s blog-post "Stateful LSTM in Keras". Philippe nicht zeigen ein Beispiel für die batch-Größe größer als eins ist, jedoch. Ich denke, dass in Ihrem Fall eine batch-Größe von vier mit stateful LSTM verwendet werden könnten, mit den folgenden Daten (geschrieben alsinput -> label
):Durch diese, den Zustand z.B. der 2. Probe im batch - #0 ist richtig wiederverwendet, um weiterhin die Ausbildung mit der 2. Probe der charge #1.
Dies ist irgendwie ähnlich wie die option 4, Sie sind jedoch nicht über alle Etiketten vorhanden.
Update:
In Erweiterung zu meinem Vorschlag, wo
batch_size
entspricht dernum_steps
Alexis Huet eine Antwort gibt für den Fall derbatch_size
ein Teiler vonnum_steps
die verwendet werden können, für größerenum_steps
. Er beschreibt es schön auf seinem blog.InformationsquelleAutor der Antwort Robert Pollak
Ich bin gerade dabei, zu lernen, LSTMs in TensorFlow und versuchen, zu implementieren, ein Beispiel, das (zum Glück) versucht vorherzusagen einige Zeit-Serie /Nummer-Serie genereated durch eine einfache Mathematik-Funktion.
Aber ich bin mit einem anderen Weg, um die Struktur der Daten für training, motivierte Unüberwachtes Lernen von Video-Darstellungen mit LSTMs:
LSTM Zukunft Prädiktor-Modell
Option 5:
Neben diesem Papier habe ich (versucht) zu nehmen inspiration von den gegebenen TensorFlow RNN Beispiele. Meine aktuelle komplette Lösung sieht wie folgt aus:
Beispiel-Ausgabe dieser sieht wie folgt aus:
Modell ist ein LSTM-autoencoder mit 2 Ebenen jeder.
Leider, wie Sie sehen können, in die Ergebnisse dieses Modells nicht lernen, die Reihenfolge richtig. Ich könnte der Fall sein, bin ich gerade dabei ein böser Fehler irgendwo, oder 1000-10000 training Schritte ist einfach viel zu wenig für eine LSTM. Wie gesagt, ich bin auch gerade erst anfangen zu verstehen/verwenden LSTMs richtig.
Aber ich hoffe, dies kann Ihnen einige inspiration bei der Umsetzung.
InformationsquelleAutor der Antwort bsautermeister
Glaube ich Option 1 am nächsten an der Referenz-Implementierung in /tensorflow/models/rnn/ptb/reader.py
Allerdings, eine andere Option zu wählen ist ein Zeiger in Ihre Daten-array nach dem Zufallsprinzip für jede Trainingseinheit.
InformationsquelleAutor der Antwort j314erre