De encoder definiëren
Hier zet je je eerste stap naar het bouwen van een machinevertalingsmodel: het implementeren van de encoder. De encoder die je implementeert is heel eenvoudig vergeleken met de complexe modellen die in toepassingen zoals de Google-vertalingsservice worden gebruikt. Maar geen zorgen: hoewel het model simpel is, zijn de concepten hetzelfde als bij die complexe modellen. We gebruiken hier de prefix en (bijv. en_gru) voor alles wat met de encoder te maken heeft en de voor alles rond de decoder (bijv. de_gru).
Je ziet dat we en_vocab kleiner kiezen (150) dan de werkelijke waarde (228) die we vonden. Een kleinere woordenschat verkleint het geheugengebruik van het model. De woordenschat iets verkleinen is prima, omdat we daarbij de zeldzaamste woorden verwijderen. Bij machinevertaling hebben zeldzame woorden doorgaans minder waarde dan veelvoorkomende woorden.
Deze oefening maakt deel uit van de cursus
Machine Translation met Keras
Oefeninstructies
- Definieer een
Input-laag voor een input met een woordenschatgrootteen_vocaben een sequentielengteen_len, met het argumentshape. - Definieer een
keras.layers.GRU-laag methsizeverborgen eenheden die zijn toestand (state) teruggeeft. - Haal de outputs op van de GRU-laag door
en_inputsdoor te geven en wijs de GRU-toestand toe aanen_stateen de output aanen_out. - Definieer een
keras.models.Modelwaarvan de inputen_inputsis en de outputen_state, en print de modelsamenvatting.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
import tensorflow.keras as keras
en_len = 15
en_vocab = 150
hsize = 48
# Define an input layer
en_inputs = keras.layers.____(____=____)
# Define a GRU layer which returns the state
en_gru = ____(____, ____=____)
# Get the output and state from the GRU
____, ____ = ____(____)
# Define and print the model summary
encoder = ____(inputs=____, ____=____)
print(encoder.____)