Decodeer je voorspellingen
Je LSTM-model is al getraind (details staan in het succesbericht van de vorige oefening), zodat je niet hoeft te wachten. Tijd om een functie te definiëren die de voorspellingen decodeert. Het getrainde model wordt als standaardparameter aan deze functie meegegeven.
Omdat je voorspelt met een model dat de softmax-functie gebruikt, kun je numpy's argmax() gebruiken om de index/positie te krijgen van het meest waarschijnlijke volgende woord uit de uitvoervector met waarschijnlijkheden.
De tokenizer die je eerder hebt gemaakt en gefit, is voor je geladen. Je gaat de interne index_word-dictionary gebruiken om de voorspelling van het model voor het volgende woord (een geheel getal) om te zetten naar het daadwerkelijke geschreven woord dat het representeert.
Je bent heel dichtbij het experimenteren met je model!
Deze oefening maakt deel uit van de cursus
Introductie tot Deep Learning met Keras
Oefeninstructies
- Gebruik
texts_to_sequences()om de parametertest_textom te zetten in een reeks getallen. - Verkrijg de voorspelling voor het volgende woord van het model door
test_seqdoor te geven. De index/positie van het woord met de hoogste waarschijnlijkheid krijg je door.argmax(axis=1)[0]aan te roepen op de numpy-array met voorspellingen. - Retourneer het woord dat aan de voorspelling is gekoppeld via de
index_word-dictionary van de tokenizer.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
def predict_text(test_text, model = model):
if len(test_text.split()) != 3:
print('Text input should be 3 words!')
return False
# Turn the test_text into a sequence of numbers
test_seq = tokenizer.texts_to_sequences([____])
test_seq = np.array(test_seq)
# Use the model passed as a parameter to predict the next word
pred = ____.predict(____).argmax(axis = 1)[0]
# Return the word that maps to the prediction
return tokenizer.____[____]