Die Ebenen des Teacher-Forcing-Modells definieren
Du wirst eine neue und verbesserte Version des zuvor definierten maschinellen Übersetzungsmodells erstellen. Wusstest du, dass Modelle wie der Google Machine Translator diese „Teacher Forcing”-Technik zum Trainieren ihres Modells verwendet haben?
Wie du schon gesehen hast, muss dein bisheriges Modell ein bisschen angepasst werden, um Teacher Forcing zu nutzen. In dieser Übung nimmst du die notwendigen Änderungen am vorherigen Modell vor. Du hast die Sprachparameter en_len
und fr_len
(Länge der aufgefüllten englischen/französischen Sätze), en_vocab
und fr_vocab
(Vokabularumfang der englischen/französischen Datensätze) und hsize
(Größe der versteckten Schicht der GRU-Schichten) bekommen. Denk dran, dass der Decoder eine französische Sequenz mit einem Element weniger akzeptiert als fr_len
. Denk dran, dass wir das Präfix „ en
“ für alles rund um Encoder und „ de
“ für alles rund um Decoder benutzen.
Diese Übung ist Teil des Kurses
Maschinelle Übersetzung mit Keras
Anleitung zur Übung
- Importiere das Submodul „
layers
” vontensorflow.keras
. - Hol die Encoder-Ausgangs- und Statuswerte und schreib sie in die Variablen „
en_out
“ und „en_state
“. - Definiere eine Decoder-
Input
-Schicht, die eine lange Sequenz von onehot-codierten französischen Wörtern mit der Länge „fr_len-1
“ akzeptiert. - Definiere eine Softmax-Schicht „
TimeDistributed
Dense
” mit „fr_vocab
” Knoten.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Import the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)