Wie wird ZCA Whitening implementiert? Python

7

Ich versuche, ZCA whitening zu implementieren und finde einige Artikel dazu, aber sie sind ein bisschen verwirrend ... kann jemand ein Licht für mich scheinen?

Jeder Tipp oder jede Hilfe ist willkommen!

Hier sind die Artikel, die ich gelesen habe:

Ссылка Ссылка

Ich habe mehrere Dinge ausprobiert, aber die meisten von ihnen habe ich nicht verstanden und ich wurde irgendwann eingesperrt. Im Moment habe ich das als Basis, um neu zu beginnen:

%Vor%     
Mr Tsjolder 21.07.2015, 01:14
quelle

2 Antworten

10

Wie in RM kommentieren , Andfoy < Die ZCA-Whitening-Funktion von / a> enthält einen kleinen, aber entscheidenden Fehler: Der np.diag(S) sollte entfernt werden. Numpy liefert S als einen m × 1-Vektor und nicht eine m × m-Matrix (wie es bei anderen SVD-Implementierungen üblich ist, z. B. Matlab). Daher wird die Variable ZCAMatrix zu einem m × 1 Vektor und nicht zu einer m × m Matrix, wie sie sein sollte (wenn die Eingabe m × n ist). (Außerdem ist die Kovarianzmatrix in Andfoys Antwort nur gültig, wenn X vorzentriert ist, d. H. Mittelwert 0).

Hier ist eine Python-Funktion zum Erzeugen der ZCA-Aufhellungsmatrix:

%Vor%

Und ein Beispiel für die Verwendung:

%Vor%

Ich hoffe, es hilft!

NB : Sie können die vollständige Antwort in Python auf die Stanford UFLDL ZCA Whitening-Übung sehen hier .

    
Pascal Timshel 26.07.2016 13:07
quelle
9

Sind Ihre Daten in einer mxn-Matrix gespeichert? Wo ist m die Dimension der Daten und n sind die Gesamtzahl der Fälle? Wenn dies nicht der Fall ist, sollten Sie die Größe Ihrer Daten ändern. Zum Beispiel, wenn Ihre Bilder die Größe 28x28 haben und Sie nur ein Bild haben, sollten Sie einen 1x784 Vektor haben. Sie könnten diese Funktion verwenden:

%Vor%

Dann wenden Sie ZCA Whitening auf Ihr Trainingset an:

%Vor%

Es ist wichtig, die ZCAMatrix -Matrix zu speichern, Sie sollten Ihre Testfälle multiplizieren, wenn Sie nach dem Training des Neuronalen Netzes voraussagen wollen.

Schließlich lade ich Sie ein, die Stanford UFLDL Tutorials in Ссылка oder Ссылка . Sie haben ziemlich gute Erklärungen und einige Programmierübungen auf MATLAB, aber fast alle Funktionen, die auf MATLAB gefunden werden, sind auf Numpy mit dem gleichen Namen. Ich hoffe, dass dies einen Einblick geben kann.

    
quelle