Frage

Für mein Uni-Projekt Ich bin ein neuronales Netz zu schaffen, die die Wahrscheinlichkeit klassifizieren können, dass eine Kreditkartentransaktion betrügerisch ist oder nicht. Ich trainiere mit Backpropagation. Ich schreibe dies in Java. Ich möchte Multithreading bewerben, weil mein Computer ein Quad-Core-i7 ist. Es nervt mich Stunden Training zu verbringen und die meisten meiner Kerne im Leerlauf sehen.

Aber wie würde ich mich bewerben Multithreading Backpropagation? Backprop funktioniert durch die Fehler rückwärts durch das Netz anzupassen. Eine Schicht muss getan werden, bevor die anderen weiter. Gibt es eine Möglichkeit, dass ich mein Programm ändern kann, Multi-Core-Kulisse zu tun?

War es hilfreich?

Lösung

Zu allererst nicht backpropagation verwenden. Es gibt viele andere Möglichkeiten gibt. Ich würde versuchen, RPROP (elastische Propagation) vorschlagen. Es wird nicht so groß sein, von Änderungen an Ihrem Backpropagation-Algorithmus. Sie brauchen keine Lernrate oder Impuls zu geben. Es ist wirklich fast so, als wenn Sie eine individuelle, variable haben, für jede Verbindung im neuronalen Netz Lernrate.

Als Multithreading backpropagation zu Anwendung. Ich schrieb einen Artikel zu diesem Thema.

http://www.heatonresearch.com/encog/mprop/compare.html

Grundsätzlich schaffe ich eine Anzahl von Threads und unterteilen die Trainingsdaten, so jeder Thread eine nahezu gleiche Menge aufweist. Ich die Berechnung der Gradienten in jedem Thread, und sie werden in einem Schritt verringern summiert. Wie die Gradienten auf die Gewichte angewendet werden, hängt von dem Algorithmus Ausbreitungs Training verwendet, aber das Gewicht Update wird in einem kritischen Abschnitt getan.

Wenn Sie den Code wesentlich mehr Trainingsgebiete als Gewichte haben verbringt viel mehr Zeit in der Multi-Threaded Gradientenberechnungssystems als der kritische Abschnitt Gewichtungsaktualisierungssignalszu.

Ich biete einige der Performance-Ergebnisse auf den obigen Link. Es ist wirklich die Dinge beschleunigen!

Andere Tipps

Für mehr CPU-Kern mit Java verwenden, können Sie einfach mehr Optionen versuchen, für JVM, ohne den Code zu ändern:

  • -Server
  • -d64
  • -XX: -UseParallelGC

und andere Optionen unter http://java.sun.com/javase /technologies/hotspot/vmoptions.jsp

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top