Den Decoder des Inferenzmodells festlegen
Das Inferenzmodell ist das Modell, das in der Praxis verwendet wird, um Übersetzungen zu erstellen, wenn der Benutzer dies wünscht. In dieser Übung musst du den Decoder des Inferenzmodells implementieren.
Der Decoder des Inferenzmodells ist anders als der Decoder des Trainingsmodells. Wir können den Decoder nicht mit französischen Wörtern füttern, weil wir ja genau diese vorhersagen wollen. Zum Glück gibt's eine Lösung. Wir können das vorhergesagte französische Wort aus dem letzten Schritt nehmen und es in den Decoder des Inferenzmodells reinpacken. Wenn du also eine Übersetzung erstellen willst, muss der Decoder immer ein Wort nach dem anderen machen und dabei die vorherige Ausgabe als Input nehmen.

Für diese Übung wurden die Variablen „ hsize
“ (versteckte Größe der „ GRU
“-Ebene), „ fr_len
“ und „ fr_vocab
“ importiert. Denk dran, dass das Präfix „ de
“ für den Decoder steht.
Diese Übung ist Teil des Kurses
Maschinelle Übersetzung mit Keras
Anleitung zur Übung
- Definiere eine „
Input
“-Schicht, die einen Stapel von One-Hot-kodierten französischen Wortsequenzen (Sequenzlänge 1) akzeptiert. - Definiere eine weitere „
Input
“-Schicht, die einen Stapel von „hsize
“-Zuständen annimmt, die du verwenden wirst, um den vorherigen Zustand an den Decoder weiterzugeben. - Hol dir die Ausgabe und den Status des Decoders
GRU
. - Mach ein Modell, das die französischen Wörter „
Input
“ und den vorherigen Zustand „Input
“ akzeptiert und die endgültige Vorhersage und den neuen Zustand „GRU
“ ausgibt.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)
# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())