Das Einbettungsmodell festlegen
Du wirst ein Keras-Modell definieren, das:
- Verwendet „
Embedding
“-Ebenen - Wird mit Lehrerzwang trainiert
Dieses Modell hat zwei Einbettungsschichten: eine Encoder-Einbettungsschicht und eine Decoder-Einbettungsschicht. Da das Modell mit Teacher Forcing trainiert wird, verwendet es außerdem eine Sequenzlänge von „ fr_len-1
“ in der Decoder- Input
-Schicht.
Für diese Übung hast du alle benötigten Bibliotheken „ keras.layers
“ und „ Model
“ importiert. Außerdem wurden die Variablen „ en_len
“ (Länge der englischen Sequenz), „ fr_len
“ (Länge der französischen Sequenz), „ en_vocab
“ (Umfang des englischen Wortschatzes), „ fr_vocab
“ (Umfang des französischen Wortschatzes) und „ hsize
“ (versteckte Größe) definiert.
Diese Übung ist Teil des Kurses
Maschinelle Übersetzung mit Keras
Anleitung zur Übung
- Definiere eine „
Input
“-Schicht, die eine Folge von Wort-IDs akzeptiert. - Definiere eine „
Embedding
“-Schicht, die „en_vocab
“-Wörter einbettet, eine Länge von 96 hat und eine Folge von IDs akzeptieren kann (die Länge der Folge wird mit dem Argument „input_length
“ angegeben). - Definiere eine „
Embedding
“-Schicht, die „fr_vocab
“-Wörter einbettet, eine Länge von 96 hat und eine Folge von „fr_len-1
“-IDs akzeptieren kann. - Mach ein Modell, das einen Input vom Encoder und einen Input vom Decoder (in dieser Reihenfolge) nimmt und die Wortvorhersagen ausgibt.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)
de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)
# Define the Model which accepts encoder/decoder inputs and outputs predictions
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])