Ich bin daran interessiert, den Einsatz der Architektur in dem jüngsten Papier „ Unüberwachte Domain Anpassung von Backpropagation “ in Vorschlag zu machen das Lasagne / Theano-Rahmenwerk.
Die Sache an dieser Arbeit, die es ein wenig ungewöhnlich macht, ist, dass sie eine 'Gradientenumkehrschicht' enthält, die den Gradienten während der Rückpropagierung > umkehrt:
(Die Pfeile am unteren Rand des Bildes sind die Rückpropagierungen, deren Gradient umgekehrt ist.)
In dem Papier behaupten die Autoren, dass der Ansatz „umgesetzt werden kann jedes tiefes Lernpaket mit“, und in der Tat bieten sie ein Version in Caffe gemacht .
Allerdings verwende ich das Lasagne / Theano-Framework aus verschiedenen Gründen.
Ist es möglich, eine solche Gradientenumkehrschicht in Lasagne / Theano zu erzeugen? Ich habe keine Beispiele gesehen, wo man benutzerdefinierte Skalartransformationen auf solche Gradienten anwenden kann. Wenn ja, kann ich dies tun, indem ich eine benutzerdefinierte Ebene in Lasagne erstelle?
Hier ist eine Skizze Implementierung mit einfachen Theano. Dies kann leicht in Lasagne integriert werden.
Sie müssen eine benutzerdefinierte Operation erstellen, die im Vorwärtsdurchlauf als Identitätsoperation fungiert, aber den Verlauf im Rückwärtsdurchlauf umgekehrt.
Hier ist ein Vorschlag, wie das implementiert werden könnte. Es ist nicht getestet und ich bin nicht 100% sicher, dass ich alles richtig verstanden habe, aber Sie können es gegebenenfalls überprüfen und beheben.
%Vor%Unter Verwendung der Papiernotation und der Namenskonventionen finden Sie hier eine einfache Theano-Implementierung des vollständigen allgemeinen Modells, das sie vorschlagen.
%Vor%Dies ist ungetestet, aber die folgenden können erlauben, dass diese benutzerdefinierte Operation als Lasagne-Ebene verwendet wird:
%Vor%Tags und Links neural-network backpropagation theano lasagne