Pybrain zeitreihenvorhersage mit rekurrenten LSTM-Netze
Habe ich eine Frage im Hinterkopf, das bezieht sich auf die Verwendung von pybrain zu tun regression einer Zeitreihe. Ich Plane, verwenden Sie die LSTM-Ebene in pybrain zu trainieren und Vorhersage von Zeitreihen.
Fand ich ein Beispiel-code hier in den unten stehenden link
In dem Beispiel oben, das Netzwerk ist in der Lage, vorherzusagen, eine Sequenz, nach der Ihr trainiert. Aber das Problem ist, das Netzwerk übernimmt alle sequentiellen Daten durch die Fütterung von es in einem Rutsch auf die input-Schicht. Zum Beispiel, wenn die Trainings-Daten hat 10 Funktionen, jedem, der 10 Merkmale werden gleichzeitig zugeführt werden, 10 Eingangs-Knoten zu einem Zeitpunkt.
Aus meinem Verständnis, dies ist nicht mehr eine Zeit-Serie Prognose bin ich im Recht? Da gibt es keinen Unterschied in Bezug auf die Zeit, jede Funktion ist in das Netzwerk eingespeist? Korrigieren Sie mich wenn ich bin falsch auf diesem.
Also, was ich versuche zu erreichen, ist ein wiederkehrendes Netz, hat nur EINEN input-Knoten und EIN output-Knoten. Die input-Knoten ist, wo alle die Zeitreihen-Daten gefüttert werden nacheinander zu verschiedenen Zeitschritten. Wird das Netzwerk trainiert werden, reproduzieren die Eingabe an die Ausgabe-Knoten.
Könnten Sie bitte vorschlagen, oder führe mich in den Bau des Netzes, die ich erwähnt?
Vielen Dank im Voraus.
InformationsquelleAutor der Frage dnth | 2014-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie trainieren können, eine LSTM-Netz mit einer einzigen Eingabe Knoten und eine einzige Ausgabe-node für tun zeitreihenvorhersage wie diese:
Erste, nur als "gute Praxis", verwenden wir Python ist3 print-Funktion:
Dann machen Sie eine einfache Zeitreihe:
[1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2]
Legen Sie nun das timeseries in ein betreutes Datensatz, wobei das Ziel für jede Probe die nächste Probe:
Erstellen Sie eine einfache LSTM-Netz mit 1 input-Knoten, 5 LSTM-Zellen und 1-output node:
Zug das Netzwerk:
Plot die Fehler (beachten Sie, dass in diesem einfachen Beispiel Spielzeug, wir testen und trainieren auf dem gleichen dataset, das ist natürlich nicht das, was Sie tun würde, für ein richtiges Projekt!):
Nun Fragen Sie das Netzwerk, um vorherzusagen, die nächste Probe:
(Der code oben ist auf der Grundlage der
example_rnn.py
und mit Beispielen aus der PyBrain Dokumentation)InformationsquelleAutor der Antwort
Ich denke, eine bessere (einfachere/klarere) Beispiel zu lernen wäre hier, in Richtung der Unterseite der Seite:
http://pybrain.org/docs/tutorial/netmodcon.html
Im wesentlichen, einmal als gesetzt angezeigt, wird es automatisch zu verfolgen, die Eingänge' Vergangenheit (bis und es sei denn, Sie drücken Sie reset). Aus den docs:
http://pybrain.org/docs/api/structure/networks.html?highlight=recurrentnetwork#pybrain.structure.networks.RecurrentNetwork
"Bis .reset() aufgerufen wird, wird das Netzwerk verfolgt alle früheren Eingaben und ermöglicht so die Verwendung von rekurrenten verbindungen und Ebenen, die in der Zeit zurückblicken."
Also ja, keine Notwendigkeit zu re-präsentieren alle bisherigen Eingaben für das Netzwerk zu jeder Zeit.
InformationsquelleAutor der Antwort rossdavidh
Ich getestet habe, LSTM Vorhersage einiger Zeit Sequenz mit Theano. Ich fand, dass für einige glatte Kurve, es kann vorhergesagt werden, richtig. Aber für einige Zick-Zack-Kurve . Es ist schwer zu prognostizieren. Die ausführlichen Artikel sind als unten:
Zeit vorherzusagen Sequenz mit LSTM
Das vorhergesagte Ergebnis kann angezeigt werden wie folgt:
http://www.fuzihao.org/blog/images/LSTM_predict.png
InformationsquelleAutor der Antwort maple