De decoder definiëren
In deze oefening implementeer je de decoder en definieer je een end-to-endmodel dat van de encoderinputs naar de GRU-outputs van de decoder gaat. De decoder gebruikt hetzelfde model als de encoder. Er zijn echter verschillen in de inputs en toestanden die aan de decoder worden doorgegeven, vergeleken met de encoder. Zo gebruikt de decoder de contextvector die door de encoder is geproduceerd zowel als input als als initiële staat voor de decoder. Onthoud dat we het voorvoegsel en (bijv. en_gru) gebruiken voor alles wat met de encoder te maken heeft en de voor decodergerelateerde zaken (bijv. de_gru).
Om de decoder te implementeren gebruik je RepeatVector- en GRU-lagen.
Voor deze oefening krijg je het encodermodel en de verschillende encoderlagen die je al hebt geïmplementeerd. Zo worden de encoderinputs aangeleverd als en_inputs en de contextvector als en_state. Let ook op dat de objecten GRU en Model al zijn geïmporteerd.
Deze oefening maakt deel uit van de cursus
Machine Translation met Keras
Oefeninstructies
- Definieer een
RepeatVector-laag dieen_stateals input neemt en dezefr_lenkeer herhaalt. - Definieer een GRU-laag,
decoder_gru, methsizeverborgen eenheden die alle geproduceerde outputs teruggeeft. - Haal de output van de
decoder_gru-laag op doorde_inputsals input te geven enen_stateals de initiële staat van de decoder in te stellen. - Definieer een model dat
en_inputsals input engru_outputsals output neemt.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
from tensorflow.keras.layers import RepeatVector
hsize = 48
fr_len = 20
# Define a RepeatVector layer
de_inputs = ____(____)(____)
# Define a GRU model that returns all outputs
decoder_gru = ____(____, ____=____)
# Get the outputs of the decoder
gru_outputs = ____(____, initial_state=____)
# Define a model with the correct inputs and outputs
enc_dec = ____(inputs=____, outputs=____)
enc_dec.summary()