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.
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 Ссылка
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
festlegenIch empfehle, die translate.py-Datei in der Tensorflow seq2seq-Bibliothek zu betrachten, um zu sehen, wie damit umgegangen wird.
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.
Sehen wir uns den Quellcode
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%Tags und Links python tensorflow lstm