Saturday 14 January 2017

Gleitende Durchschnittliche Normalisierung

Ich habe diese tägliche Zeitreihe der beobachteten Preise: P1, P2. Pn. Ich möchte mit returns arbeiten: 0. P2-P1. Pn - P. Mir wurde gesagt, den ersten Term (P1-P0 P1-) zu entfernen, indem wir ihn auf 0 setzen. Es scheint, dass diese 0 sehr verschieden von anderen Termini ist und keine gute Lösung ist. (Ich glaube sogar, es ist keine Lösung überhaupt). Hier sind die Lösung, die ich in Betracht gezogen: 0, da es keine Rückkehr am ersten Tag, um mit der Zeitreihe nichts zu sein, nur einfach das Entfernen des Problems, was denkst du über dieses Problem Dies blieb über ein ähnliches Problem, durchschnittlich. Es gibt ähnliche fehlende Begriffe am Beginn der Zeitreihe. Wenn ich einen p - gleitenden Durchschnitt mache, nehme ich normalerweise den letzten p - Wert vor meinem Datum ein. Ich habe das gleiche Problem als vorher: am Anfang der Zeitreihe gibt es nicht genug Daten, um eine Summe mit p Begriffen zu machen. Gibt es einen Trick, um dieses Problem zu adressieren. Würde es etwas ändern, um die p-Werte nach meinem Datum zu nehmen. Die (p-1) 2-Werte vor und nach meinem Datum. Es ändert nicht den allgemeinen Begriff meines gleitenden Durchschnitts, sondern nur die Werte am Anfang und am Ende meiner Zeitreihe. Spielt es eine Rolle. How. Normalisierungsschichten Die LocalResponseNormalization2DLayer-Implementierung enthält Code von pylearn2. Die durch die folgende Lizenz abgedeckt ist: Copyright (c) 201182112014, Universit de Montral Alle Rechte vorbehalten. Neuverteilung und Verwendung in Quell - und Binärformularen, mit oder ohne Änderung, sind zulässig, sofern die folgenden Bedingungen erfüllt sind: Die Weiterverbreitung des Quellcodes muss den oben genannten Copyright-Vermerk, diese Liste der Bedingungen und den folgenden Haftungsausschluss enthalten. Neuverteilungen in binärer Form müssen den oben genannten Copyright-Vermerk, diese Liste der Bedingungen und den folgenden Haftungsausschluss in den Dokumentationen und / oder anderen Materialien, die mit dem Vertrieb zur Verfügung gestellt werden, wiedergeben. Weder der Name des Urheberrechtsinhabers noch die Namen seiner Mitwirkenden dürfen verwendet werden, um aus dieser Software abgeleitete Produkte ohne besondere vorherige schriftliche Zustimmung zu unterstützen oder zu fördern. DIESE SOFTWARE WIRD VON DEN COPYRIGHT-INHABERN UND MITARBEITERN 8220AS IS8221 UND AUSDRÜCKLICH ODER IMPLIZIT GARANTIEN, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GESETZLICHE GEWÄHRLEISTUNG DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. IN KEINEM FALL SIND DIE COPYRIGHT-INHABER ODER MITARBEITER HAFTEN FÜR DIREKTE, INDIREKTE, KONKRETE ODER FOLGESCHÄDEN (EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE BESCHAFFUNG VON ERSATZPRODUKTEN ODER DIENSTLEISTUNGEN VERLUST VON DATEN ODER GEWINNEN ODER BETRIEBS UNTERBRECHUNG) URSACHE UND DER HAFTUNGSTHEORIE, OB IM VERTRAG, HAFTBARKEIT ODER SCHULD (EINSCHLIESSLICH FAHRLÄSSIGKEIT), DIE SICH IN IRGENDEINER WEISE AUS DER VERWENDUNG DIESER SOFTWARE, AUCH WENN DIESER SCHÄDEN IN DIE MÖGLICHKEIT. Kanalübergreifende Lokalreaktions-Normalisierung für 2D-Funktionskarten. Aggregation ist nur über Kanäle, nicht innerhalb von Kanälen, und durchgeführt 8220pixelwise8221. Wenn der Wert des (i) ten Kanals (xi) ist. Der Ausgang ist, wo die Summierung über diese Position auf (n) benachbarten Kanälen durchgeführt wird. Dieser Code wird von pylearn2 angepasst. Siehe Modul-Docstring für Lizenzinformationen. Diese Schicht implementiert die Batch-Normalisierung ihrer Eingaben nach R38: Das heißt, die Eingabe wird auf Null-Mittelwert und Einheitsabweichung normiert und dann linear transformiert. Der entscheidende Teil ist, dass der Mittelwert und die Varianz über die Batch-Dimension, d. H. Über Beispiele, nicht pro Beispiel, berechnet werden. Während des Trainings werden (mu) und (sigma2) als Mittelwert und Varianz der aktuellen Eingabe-Mini-Batch (x) definiert. Und während des Tests werden sie durch durchschnittliche Statistiken über die Trainingsdaten ersetzt. Folglich hat diese Schicht vier gespeicherte Parameter: (beta). (Gamma). Und die Mittelwerte (mu) und (sigma2) (nota bene: anstelle von (sigma2)) die Schicht tatsächlich (1 sqrt) für Kompatibilität zu cuDNN). Diese Ebene lernt standardmäßig die durchschnittlichen Statistiken als exponentielle gleitende Mittelwerte, die während des Trainings berechnet werden, so dass es ohne Änderung des Trainings in ein bestehendes Netzwerk eingesteckt werden kann (siehe Anmerkungen). eingehend . Eine Layer-Instanz oder ein Tupel Die Ebene, die in diese Ebene eingefügt wird, oder die erwarteten Eingabeformachsen. 8216auto8217, int oder tuple von int Die Achse oder Achsen, um sich zu normalisieren. Wenn auto (die Voreinstellung) über alle Achsen normalisiert wird, außer für die zweite, wird dies über die Minibatch-Dimension für dichte Schichten und zusätzlich über alle räumlichen Dimensionen für Faltungsschichten normalisiert. Kleine Konstante (epsilon) der Varianz hinzugefügt, bevor die Quadratwurzel und durch Dividieren, numerische Probleme Koeffizient für den exponentiell gleitenden Durchschnitt von chargenweise Mittelwerte und Standardabweichungen während der Ausbildung der näher an einem, desto berechnet zu vermeiden wird es abhängen, Auf die letzten Chargen gesehen Beta. Theano freigegebene Variable, Ausdruck, numpy Array, aufrufbar oder Keine Initialwert, Ausdruck oder Initialisierer für (beta). Muss mit der eingehenden Form übereinstimmen und alle Achsen in Achsen überspringen. Setzen Sie auf None, um es auf 0.0 zu setzen, anstatt es zu lernen. Weitere Informationen finden Sie unter lasagne. utils. createparam (). Gamma. Theano freigegebene Variable, Ausdruck, numpy Array, aufrufbar oder None Anfangswert, Ausdruck oder Initialisierer für (Gamma). Muss mit der eingehenden Form übereinstimmen und alle Achsen in Achsen überspringen. Legen Sie auf None fest, um es auf 1.0 zu setzen, anstatt es zu lernen. Weitere Informationen finden Sie unter lasagne. utils. createparam (). Bedeuten. Theano freigegebene Variable, Ausdruck, numpy Array oder aufrufbarer Initialwert, Ausdruck oder Initialisierer für (mu). Muss mit der eingehenden Form übereinstimmen und alle Achsen in Achsen überspringen. Weitere Informationen finden Sie unter lasagne. utils. createparam (). Invstd Theano freigegebene Variable, Ausdruck, numpy Array oder aufrufbarer Initialwert, Ausdruck oder Initialisierer für (1 sqrt). Muss mit der eingehenden Form übereinstimmen und alle Achsen in Achsen überspringen. Weitere Informationen finden Sie unter lasagne. utils. createparam (). Alle zusätzlichen Schlüsselwortargumente werden an die Ebenenüberklasse übergeben. Batchnorm Convenience-Funktion, um Batch-Normalisierung auf eine Ebene anzuwenden Diese Schicht sollte zwischen einer linearen Transformation (wie einem DenseLayer oder Conv2DLayer) und seiner Nichtlinearität eingefügt werden. Die Komfortfunktion batchnorm () modifiziert eine bestehende Ebene, um die Batch-Normalisierung vor ihrer Nichtlinearität einzufügen. Das Verhalten kann gesteuert werden, indem Keyword-Argumente an lasagne. layers. getoutput () übergeben werden, wenn der Ausgabeausdruck eines Netzwerks mit dieser Ebene erstellt wird. Während des Trainings normalisiert R38 jeden Eingangs-Mini-Batch durch seine Statistiken und aktualisiert einen exponentiellen gleitenden Durchschnitt der Statistiken, die für die Validierung verwendet werden sollen. Dies kann erreicht werden, indem deterministicFalse übergeben wird. Zur Validierung normalisiert R38 jeden Eingang Mini-Batch durch die gespeicherte Statistik. Dies kann erreicht werden, indem deterministicTrue übergeben wird. Für mehr feinkörnige Kontrolle können batchnormupdateaverages übergeben werden, um die exponentiellen gleitenden Mittelwerte (True) zu aktualisieren oder nicht (False), und batchnormuseaverages können übergeben werden, um die exponentiellen gleitenden Mittelwerte für die Normalisierung (True) zu verwenden oder jede Mini-Charge durch ihre zu normalisieren Eigenen Statistiken (False). Diese Einstellungen überschreiben deterministisch. Beachten Sie, dass für das Testen eines Modells nach dem Training R38 die gespeicherten exponentiellen gleitenden Durchschnittsstatistiken durch Festlegung aller Netzwerkgewichte ersetzen und durchschnittliche Statistiken über die Trainingsdaten schichtweise neu berechnen. Dies ist nicht Teil der Layer-Implementierung. Wenn Sie Achsen setzen, um die Batch-Dimension nicht einzubeziehen (die erste Achse normalerweise), erfolgt die Normalisierung pro Beispiel, nicht quer durch Beispiele. Dies erfordert keine Mittelwerte, so können Sie batchnormupdateaverages und batchnormuseaverages als falsch in diesem Fall passieren. (1. 2. 3. 4. 5) Ioffe, Sergey und Szegedy, Christian (2015): Batch-Normalisierung: Beschleunigung des tiefen Netzwerktrainings durch Verringerung der internen Kovariate-Verschiebung. Arxiv. orgabs1502.03167. Batch-Normalisierung auf eine bestehende Ebene anwenden. Dies ist eine Bequemlichkeitsfunktion, die eine bestehende Schicht modifiziert, um die Batch-Normalisierung zu beinhalten: Sie wird die Nichtlinearität des Layers stehlen, wenn es einen gibt (effektiv die Normalisierung direkt vor der Nichtlinearität einzuführen), entfernen Sie die Vorspannung, wenn es eine gibt (weil sie redundant wäre) , Und fügen Sie eine BatchNormLayer und NonlinearityLayer oben. Die Ebene, die die Normierung anwendet, um zu bemerken, dass sie irreversibel modifiziert wird, wie angegeben, abovettnphns Sie sehen nur anders aufgrund der Binning der Histogramme. Mein Punkt war jedoch zu zeigen, dass die ursprünglichen Werte lebten zwischen -100 bis 100 und jetzt nach der Normalisierung leben sie zwischen 0 und 1. Ich hätte eine andere Grafik verwendet haben, um dies zu zeigen, ich vermute, oder nur Zusammenfassung Statistiken. Ndash User25658 Sep 23 13 at 16:23 Es gibt einen wichtigen Unterschied zwischen dieser Antwort und der bereits akzeptierten Antwort. Das erklärte die Grundidee klar und direkt und zeigte dann sekundär, wie es in einem gebräuchlichen Programm zu tun. Umgekehrt posten Sie hier nur Code. Während ich bin glücklich zu glauben, dass dies ist ein guter Code (ich don39t schreiben PHP) auf diesem Forum haben wir don39t normalerweise ein Bündel von Antworten auf jede Frage erklären, wie es in jeder denkbaren Sprache zu tun. Ansonsten hätten wir hier Antworten in SAS, SPSS, Stata, MATLAB, C, C, C, Java. Python, etc, etc. ndash Nick Cox Ich glaube nicht, dass dies der einzige Unterschied ist. In meinem Code zeigte ich auch, wie man einen normalisierten Wert auf den Wert zurückgeben, den es vor der Normalisierung war. Ich denke, das lohnt sich diese Antwort. Ndash jankal Es ist immer noch wahr, dass Sie nur Code: Ich denke, Sie müssen jede angeblich besondere Tugenden von Code in Kommentar zu betonen, da sonst Leser müssen den Code zu lesen, was sie sind zu betonen. Vermutlich ist die Invertierung der Skalierung nur dann sinnvoll, wenn (a) die ursprünglichen Werte überschrieben worden sind, aber (b) der Benutzer sorgfältig daran gedacht hat, das Minimum und Maximum zu speichern. Mein größter Punkt, wie oben kommentiert, ist, dass CV nicht darauf abzielt, ein Repository von Codebeispielen zu sein. Ndash Nick Cox Mai 27 15 um 9:10 die Antwort ist richtig, aber ich habe einen Vorschlag. Was ist, wenn Ihre Trainingsdaten eine gewisse Anzahl außerhalb des Bereichs sehen. Könnten Sie Squash-Technik. Es wird garantiert nie aus dem Bereich gehen. Anstatt dieses empfehle ich dieses mit dem Quetschen wie dieses in der minimalen und maximalen Reichweite und die Größe des erwarteten out-of-range Lücke ist direkt proportional zum Grad des Vertrauens, das es out-of-range Werte geben wird. Für weitere Informationen können Sie google. Squashing der Out-of-Range-Nummern und beziehen sich auf Daten Vorbereitung Buch von dorian pyle beantwortet 25. September um 12:00 Uhr


No comments:

Post a Comment