Wie kann man eine einfache Sequenz mit seq2seq aus Tensorflow vorhersagen?

8

Ich habe vor kurzem begonnen, mit Tensorflow zu arbeiten, also kämpfe ich immer noch mit den Grundlagen.

Ich wollte eine einfache seq2seq-Vorhersage erstellen.

  • Eingabe ist eine Liste von Zahlen zwischen 0 und 1.
  • Ausgabe ist die erste Nummer von Liste und der Rest der Zahlen multipliziert mit dem ersten.

Ich habe es geschafft, die Modellleistung zu bewerten und Gewichte zu optimieren. Das Ding, das ich gekämpft habe, ist, wie man Vorhersagen mit trainiertem Modell macht.

%Vor%

Um model_outputs zu erzeugen, brauche ich sowohl Eingabe- als auch Ausgabewerte für das Modell, was gut für die Auswertung ist, aber in der Vorhersage habe ich nur Eingabewerte. Ich vermute, ich muss etwas mit Zuständen machen, aber ich bin unsicher, wie ich sie in eine Folge von Schwimmern umwandeln kann.

Der vollständige Code ist hier verfügbar Ссылка

    
Daniel Lyam Montross 27.06.2016, 09:28
quelle

3 Antworten

4

Wenn Sie trainieren, geben Sie den Decoder-Eingang bei jedem Decoder-Zeitschritt als den gewünschten Ausgang ein. Wenn Sie testen, haben Sie nicht die gewünschte Ausgabe, also ist das Beste, was Sie tun können, eine Ausgabe zu testen. Dies wird die Eingabe für den nächsten Zeitschritt sein.

TLDR; Geben Sie die Decoderausgabe zu jedem Zeitschritt als Eingabe für den nächsten Zeitschritt ein.

Bearbeiten: Einige TF-Codes

Die Funktion basic_rnn_seq2seq return s rnn_decoder (decoder_inputs, enc_states [-1], Zelle)

Sehen wir uns den rnn_decoder an: def rnn_decoder (decoder_inputs, initial_state, Zelle, loop_function = Keine ,                 scope = Keine):   ....

loop_function : Wenn nicht, wird diese Funktion auf den i-ten Ausgang angewendet       um i + 1-ten Eingang zu erzeugen, werden decoder_inputs ignoriert,       bis auf das erste Element ("GO" -Symbol). Dies kann für die Decodierung verwendet werden,       aber auch für das Training, um Ссылка zu emulieren.

Während der Dekodierung müssen Sie diese loop_function = True

festlegen

Ich empfehle, die translate.py-Datei in der Tensorflow seq2seq-Bibliothek zu betrachten, um zu sehen, wie damit umgegangen wird.

    
user4383691 28.06.2016, 04:45
quelle
0

Die vorherige Antwort von user4383691 ist unvollständig. Ich habe das gleiche Problem, und nachdem ich in den rnn_decoder gegraben habe, habe ich Folgendes gefunden: Das Modell wendet das loop_fn auf den i-ten Ausgang an, also Wahr kein Sinn, da es keine Funktion ist. Sie sollten eine Funktion ausführen, die den i-ten Ausgang aufnimmt und den i + 1-ten Ausgang zurückgibt. Ich bin immer noch dabei, eine solche Funktion zu erstellen, und werde sobald wie möglich aktualisieren.

    
Vishal Upendran 17.01.2017 06:27
quelle
0

Sehen wir uns den Quellcode :

%Vor%

Die Schleife zählt die decoder_inputs auf, ob Sie mit den bereitgestellten decoder_inputs trainieren oder ohne die Eingänge testen. Dies liegt daran, dass die decoder_inputs beim Testen durch die Ausgabe der loop_function (in der vierten Zeile des obigen Snippets) ersetzt werden.

Normalerweise können Sie die dec_inputs mit end_ids wie hier füllen.

%Vor%     
lerner 19.05.2017 10:39
quelle

Tags und Links