Euklidische Verlustschicht in Caffe

8

Ich versuche gerade, meine eigene Verlustschicht in caffe zu implementieren, und während ich dies versuche, verwende ich andere Schichten als Referenz. Eine Sache, die mich jedoch verwirrt, ist die Verwendung von top[0]->cpu_diff() in Backward_cpu . Ich werde die EuclideanLossLayer als Referenz verwenden. Hier sind meine Fragen

  • Ich verstehe, dass top[0]->cpu_diff() die Fehlerableitung vom nächsten Layer enthält, aber was ist, wenn es keinen anderen Layer gibt, wie wird er initialisiert? da es in EuclideanLossLayer verwendet wird, ohne irgendwelche Überprüfungen durchzuführen:

    %Vor%
  • In EuclideanLossLayer wird wiederum die Ableitung für den Fehler in Bezug auf die Aktivierungen unter Verwendung des folgenden Code-Snippets berechnet:

    %Vor%

    Wenn meine erste Annahme korrekt ist und top[0]->cpu_diff() tatsächlich die Fehlerableitung für die darüber liegende Schicht enthält, warum verwenden wir nur das erste Element, dh top[0]->cpu_diff()[0] , anstatt mit dem ganzen Vektor zu multiplizieren, dh top[0]->cpu_diff() ?

BitRiver 28.06.2015, 11:25
quelle

1 Antwort

13

Für Verlust-Layer gibt es keinen nächsten Layer und daher ist der obere Diff-Blob technisch undefiniert und unbenutzt - aber Caffe verwendet diesen vorbelegten Speicherplatz, um Daten zu speichern, die nicht zusammengehören: Caffe unterstützt das Multiplizieren von Verlust-Layern mit einem benutzerdefinierten Gewicht (loss_weight im Prototxt) wird diese Information (eine einzelne skalare Gleitkommazahl) in dem ersten Element des Diff-Arrays des oberen Blobs gespeichert. Deshalb sehen Sie in jeder Verlustschicht, dass sie sich um diesen Betrag multiplizieren, um diese Funktionalität zu unterstützen. Dies wird in Caffes Tutorial zur Verlustschicht erklärt.

Dieses Gewicht wird normalerweise verwendet, um zusätzliche Verluste zum Netzwerk hinzuzufügen. Sie können mehr darüber in Googles Tiefergehen mit Wendungen oder in Deeply - überwachte Netze .

    
Or Sharir 30.06.2015, 07:32
quelle

Tags und Links