Vorverarbeitung von Daten
Jetzt musst du die Daten für unser neues Modell mit zwei Eingaben und einer Ausgabe bearbeiten. Die beiden Eingaben sind die One-Hot-codierten englischen Wörter und die One-Hot-codierten französischen Wörter, außer dem letzten Wort.
Das Ergebnis wären die French Wörter in One-Hot-Kodierung, ohne das erste Wort. Mit anderen Worten: Im Decoder hat jedes eingegebene französische Wort ein Wort als Ausgabe, nämlich das nächste Wort. Hier erfährst du, wie du das umsetzen kannst.
Du hast die Funktionen „ sents2seqs()
“, „ en_text
“ und „ fr_text
“ zur Verfügung.
Diese Übung ist Teil des Kurses
Maschinelle Übersetzung mit Keras
Anleitung zur Übung
- Hol dir mit der Funktion „
sents2seqs()
“ (onehot-codiert und umgekehrt) eine Reihe von Encoder-Eingaben (von „i
“ bis „i+bsize
“). - Hol dir mit der Funktion „
sents2seqs()
“ (onehot-codiert) einen Stapel von Decodereingängen und -ausgängen (von „i
“ bis „i+bsize
“). - Trenne die Decodereingänge (alle französischen Wörter außer dem letzten) von „
de_xy
“, indem du nach der Zeitdimension schneidest. - Trenn die Decoder-Ausgänge (alle französischen Wörter außer dem ersten) von „
de_xy
“.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
bsize = 250
for i in range(0, len(en_text), bsize):
# Get the encoder inputs using the sents2seqs() function
en_x = ____('source', ____[____:____], onehot=True, reverse=____)
# Get the decoder inputs/outputs using the sents2seqs() function
de_xy = sents2seqs('target', ____[____:____], onehot=True)
# Separate the decoder inputs from de_xy
de_x = de_xy[:,____,:]
# Separate the decoder outputs from de_xy
de_y = de_xy[:,____,:]
print("Data from ", i, " to ", i+bsize)
print("\tnp.argmax() => en_x[0]: ", np.argmax(en_x[0], axis=-1))
print("\tnp.argmax() => de_x[0]: ", np.argmax(de_x[0], axis=-1))
print("\tnp.argmax() => de_y[0]: ", np.argmax(de_y[0], axis=-1))