2016-08-23 1 views
0

Ich werde ein neuronales Netzwerk aufbauen, das eine Architektur von mehr als einer Ausgangsebene hat. Spezifischer ist es entworfen, um parallele Prozeduren auf einer Reihe von Faltungsschichten aufzubauen. Ein Zweig soll Klassifizierungsergebnisse (softmax-like) berechnen; der andere ist, Regressionsergebnisse zu erhalten. Ich bin jedoch dabei, das Modell zu entwerfen und Verlustfunktionen (Kriterien) zu wählen.Torch Implementierung von Multi-Output-Schicht neuronales Netzwerk

I. Sollte ich den Brennerbehälter nn.Parallel() oder nn.Concat() für die Zweigschichten oben auf Conv-Schichten (nn.Sequential()) verwenden? Was ist der Unterschied außer dem Datenformat?

II. Aufgrund von Ausgabedaten sind eine Klassifikationsverlustfunktion und eine Regressionsverlustfunktion linear zu kombinieren. Ich frage mich, ob nn.MultiCriterion() oder nn.ParallelCriterion() in Bezug auf bestimmte Container gewählt werden. Oder ich muss eine neue Kriteriumsklasse anpassen.

III. Könnte jemand, der ähnliche Arbeit geleistet hat, mir sagen, ob Fackel zusätzliche Anpassung benötigt, um Backprop für das Training zu implementieren. Ich beschäftige mich mit der Frage der Datenstruktur von Brennerbehältern.

Antwort

1
  1. Concat vs Parallel unterscheiden, daß jedes Modul in Concat die gesamte Ausgabe der letzten Schicht als Eingabe erhält, während jeder Eingang Parallel eine Scheibe der Ausgabe der letzten Schicht erfolgt. Für Ihren Zweck benötigen Sie Concat, nicht Parallel, da beide Verlustfunktionen die gesamte Ausgabe Ihres sequentiellen Netzwerks übernehmen müssen.

  2. Basierend auf dem Quellcode MultiCriterion und ParallenCriterion machen sie praktisch das Gleiche. Der wichtige Unterschied besteht darin, dass Sie im Fall von MultiCriterion mehrere Verlustfunktionen bereitstellen, aber nur ein Ziel, und alle werden für dieses Ziel berechnet. Da Sie eine Klassifikations- und eine Regressionsaufgabe haben, nehme ich an, dass Sie unterschiedliche Ziele haben, also benötigen Sie ParallelCriterion(false), wobei false den Multitarget-Modus aktiviert (wenn das Argument trueParallelCriterion identisch zu MultiCriterion zu sein scheint). Dann wird erwartet, dass die target eine Tabelle von Zielen für einzelne Kriterien ist.

  3. Wenn Sie Concat und ParallelCriterion verwenden, sollte Taschenlampe in der Lage sein, Gradienten für Sie richtig zu berechnen. Beide implementieren updateGradInput, die die Steigungen einzelner Blöcke richtig zusammenführt.