Deel 2: Speurtocht
Er zit nu een kleine twist in de speurtocht. Je bent je laptop vergeten in te pakken en je hebt alleen een apparaat met beperkte geheugenruimte bij je. De code die je schrijft mag uit minder dan 4 regels bestaan (exclusief commentaar). Omdat je de code zo compact mogelijk moet maken, ga je list comprehension gebruiken.
List comprehension is een mooie manier om in één regel door data te loopen. Als je bijvoorbeeld alle even getallen uit een lijst met getallen wilt halen, kun je [n for n in range(100) if n%2==0] gebruiken. Zoals je ziet, kun je met list comprehension for-lussen en if-statements combineren in één regel code.
Deze oefening maakt deel uit van de cursus
Machine Translation met Keras
Oefeninstructies
- Haal de woord-ID's op voor de onehot-gecodeerde vectoren in de
treasure_map. - Haal de batchgrootte op (de allereerste dimensie) van de treasure map en gebruik die om een for-lus te maken.
- Haal de woorden van de i-de zin op door over de i-de rij van de
word_idste itereren terwijl je woord-ID's die gelijk zijn aan nul negeert.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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))