2016-07-15 14 views
-2

Ich versuche diesen Artikel https://arxiv.org/pdf/1606.07659v1.pdf in Keras zu replizieren. Es verwendet Auto-Encoder als Empfehlungssystem. Die Idee ist, einige der bekannten Werte (Bewertungen) zu maskieren, um Ihrem Netzwerk beizubringen, die unbekannten Werte vorherzusagen, während die anderen Werte korrekt rekonstruiert werden. Sie haben daher drei Arten von Bewertungen: nicht maskierte bekannte Werte, maskierte bekannte Werte (werden 0) und unbekannte Werte (werden 0). Ihre Verlustfunktion muss nur die Fehler der nicht maskierten bekannten Werte und maskierten bekannten Werte enthalten, aber wenn ich das richtig verstanden habe, müssen Sie auch die Ausgabe für die unbekannten Werte für die Rückpropagation maskieren, um sie nicht in die Gewichtungsaktualisierung aufzunehmen (und es muss fallweise sein). Das beigefügte Bild im Link (forward and back propagation) stammt aus dem Artikel Tutorial und erklärt die Schritte von Forward und Backpropagation.Keras - Fallweise Maskierung des Ausgangs für Backpropagation

Hätten Sie eine Idee, wie Sie diese fallweise Maskierung der Ausgabe oder jede andere Möglichkeit implementieren können, um mit diesem Problem umzugehen?

Vielen Dank!

Antwort

0

Wenn zwei Tensor (A, Maske) die gleiche Form hat oder in die gleiche Form übertragen werden kann. Verwenden Sie dann A*Mask, um die elementweise Maskierung zu implementieren.

Eine fallweise Maskierung kann durch K.switch() in document implementiert werden. Beispiel: K.switch(T.equal(Mask, 0), 0, A) gibt 0 zurück, wenn Maske 0 ist. Sonst elementweise.