Ich würde gerne wissen, ob es einen Code zum Trainieren eines Faltungsnetzes für die Zeitreihenklassifizierung gibt.
Ich habe kürzlich einige Veröffentlichungen gesehen ( http://www.fer.unizg.hr/_download/repository/KDI-Djalto.pdf ), bin mir aber nicht sicher, ob es etwas gibt oder ob ich es selbst codieren muss.
Antworten:
Wenn Sie eine Open-Source-Black-Box-Lösung suchen, schauen Sie sich Weka an , eine Java-Bibliothek mit ML-Algorithmen. Dieser Typ hat in Weka auch Covolutional Layers verwendet und Sie können seinen Klassifizierungscode so bearbeiten, dass er zu einer Zeitreihen-Klassifizierungsaufgabe passt.
Was das Programmieren betrifft ... Ich arbeite an demselben Problem mit der Python-Bibliothek, theano (ich werde diesen Beitrag mit einem Link zu meinem Code bearbeiten, falls ich ihn bald knacken sollte). Hier finden Sie eine umfassende Liste aller Artikel, mit denen ich mich nach einer guten Stunde im Internet umsehen kann:
Als Ausgangspunkt können Sie den hier gefundenen Code bearbeiten , um ihn anhand einer anderen Anzahl von Kategorien zu klassifizieren, oder ihn von der Klassifizierung bis zur Regression bearbeiten. Dazu habe ich die letzte Softmax-Ebene entfernt und nur einen Ausgabeknoten erstellt. Ich habe es auf Scheiben einer Funktion wie
y=sin(x)
als Test trainiert .quelle
Es ist durchaus möglich, mit einem CNN Zeitreihenvorhersagen zu treffen, sei es eine Regression oder eine Klassifikation. CNNs sind gut darin, lokale Muster zu finden, und tatsächlich arbeiten CNNs mit der Annahme, dass lokale Muster überall relevant sind. Auch Faltung ist eine bekannte Operation in der Zeitreihen- und Signalverarbeitung. Ein weiterer Vorteil gegenüber RNNs besteht darin, dass sie sehr schnell zu berechnen sind, da sie im Gegensatz zur sequentiellen RNN-Natur parallelisiert werden können.
Im folgenden Code werde ich eine Fallstudie zeigen, in der es möglich ist, den Strombedarf in R mithilfe von Keras vorherzusagen. Beachten Sie, dass dies kein Klassifizierungsproblem ist (ich hatte kein praktisches Beispiel), es jedoch nicht schwierig ist, den Code zu ändern, um ein Klassifizierungsproblem zu behandeln (verwenden Sie eine Softmax-Ausgabe anstelle einer linearen Ausgabe und einen Kreuzentropieverlust).
Der Datensatz ist in der fpp2-Bibliothek verfügbar:
Als nächstes erstellen wir einen Datengenerator. Dies wird verwendet, um Stapel von Trainings- und Validierungsdaten zu erstellen, die während des Trainingsprozesses verwendet werden. Beachten Sie, dass dieser Code eine einfachere Version eines Datengenerators ist, der in dem Buch "Deep Learning with R" (und der Videoversion davon "Deep Learning with R in Motion") aus bemannten Veröffentlichungen zu finden ist.
Als Nächstes geben wir einige Parameter an, die an unsere Datengeneratoren übergeben werden sollen (wir erstellen zwei Generatoren, einen für das Training und einen für die Validierung).
Der Lookback-Parameter gibt an, wie weit in der Vergangenheit gesucht werden soll, und der Lookahead, wie weit in der Zukunft vorausgesagt werden soll.
Als Nächstes teilen wir unseren Datensatz auf und erstellen zwei Generatoren:
train_dm <- dm [1: 15000,]
Als nächstes erstellen wir ein neuronales Netzwerk mit einer Faltungsschicht und trainieren das Modell:
Schließlich können wir mit einem einfachen Verfahren, das in den R-Kommentaren erläutert wird, Code erstellen, um eine Sequenz von 24 Datenpunkten vorherzusagen.
und voila:
Nicht so schlecht.
quelle