Veröffentlicht am Schreib einen Kommentar

jojonki / Zeiger-Netzwerke

Zeiger NetworksOriol Vinyals, Meire Fortunato, Navdeep Jaitly.
https://arxiv.org/abs/1506.03134

Pointer Networks ist eine neue neuronale Architektur zum Erlernen der bedingten Wahrscheinlichkeit einer Ausgabesequenz mit Elementen, die diskrete Token sind, die Positionen in einer Eingabesequenz entsprechen.

In diesem Repo habe ich zwei Beispiele für Zeigernetzwerkmodelle eingefügt.

Das Sequenzmodell

Im Sequenzmodell entspricht die Länge der Ausgabe der Länge der Eingabe. Ich habe eine Spielzeugaufgabe der Sortieraufgabe gestellt. Die Ausgabe sind die sortierten Indizes der Eingabe. Siehe das folgende Beispiel.

// An example// Input : // Output: $ python sequence_train.pyepoch: 0, Loss: 0.99817Acc: 0.57% (51/9000)epoch: 2, Loss: 0.00077Acc: 100.00% (9000/9000)epoch: 4, Loss: 0.00032Acc: 99.99% (8999/9000)----Test result---Acc: 100.00% (1000/1000)

Das Grenzmodell

Im Grenzmodell ist die Ausgabe ein Tupel wie (start_index, end_index). Ich habe die folgende Grenzspielzeugaufgabe übernommen. Siehe diese Seite.

Probieren wir einen Code für ein Spielzeugproblem aus. Zeigernetzwerke sind wirklich am relevantesten für wiederholungssensitive Datensequenzen, also werden wir eines erstellen. Angenommen, wir nehmen an, dass unsere Eingabedaten eine Folge von ganzen Zahlen zwischen 0 und 10 (mit möglichen Duplikaten) unbekannter Länge sind. Jede Sequenz beginnt immer mit niedrigen ganzen Zahlen (Zufallswerte zwischen 1 und 5), hat einen Lauf von hohen ganzen Zahlen (Zufallswerte zwischen 6 und 10) und wird dann wieder niedrig, um zu beenden (1 bis 5).Eine Sequenz könnte beispielsweise „4,1,2,3,1,1,6,9,10,8,6,3,1,1“ sein, wobei der Lauf hoher Ganzzahlen fett gedruckt ist und von Läufen niedriger Ganzzahlen umgeben ist. Wir möchten ein Netzwerk trainieren, das unabhängig von der Sequenzlänge auf diese beiden Änderungspunkte zeigen kann — den Anfang und das Ende des Hochs in der Mitte.

// An example// Input : // Output: $ python boundary_train.pyepoch: 0, Loss: 0.28288accAcc: 98.79% (8891/9000)epoch: 2, Loss: 0.00291accAcc: 99.96% (8996/9000)epoch: 4, Loss: 0.00091accAcc: 100.00% (9000/9000)----Test result---Acc: 100.00% (1000/1000)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.