Teil 2: Schatzsuche
Jetzt kommt eine kleine Überraschung bei der Schatzsuche. Du hast deinen Laptop vergessen und hast nur ein Gerät mit wenig Speicher dabei. Der Code, den du schreibst, sollte weniger als 4 Zeilen lang sein (ohne Kommentare). Da du den Code so kompakt wie möglich halten musst, wirst du Listenkomprimierung verwenden.
Listenkomprimierung ist eine super Möglichkeit, Daten mit nur einer Zeile Code durchzugehen. Wenn du zum Beispiel alle geraden Zahlen aus einer Zahlenliste haben willst, kannst du Folgendes machen: [n for n in range(100) if n%2==0]
. Wie du siehst, kannst du mit Listenkomprimierung „ for
“-Schleifen und „ if
“-Anweisungen in einer einzigen Codezeile zusammenfassen.
Diese Übung ist Teil des Kurses
Maschinelle Übersetzung mit Keras
Anleitung zur Übung
- Hol dir die Wort-IDs für die Onehot-codierten Vektoren in „
treasure_map
“. - Hol dir die Batchgröße (die allererste Dimension) der Schatzkarte und mach damit eine for-Schleife.
- Hol dir die Wörter des i-ten Satzes, indem du die i-te Zeile von „
word_ids
“ durchläufst und dabei alle Wort-IDs ignorierst, die gleich Null sind.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Get the word IDs from the treasure map
word_ids = np.argmax(____, axis=-1)
# Get the batch size from the treasure map
for i in range(treasure_map.shape[____]):
# Get all the words of the i-th sentence using list comprehension
words = [index2word[____] for wid in word_ids[____] if wid != ____]
print("Instruction ", i+1, ": ", ' '.join(words))