De lagen van het Teacher Forcing-model definiëren
Je gaat een nieuwe en verbeterde versie definiëren van het machinevertalingsmodel dat je eerder hebt gebouwd. Wist je dat modellen zoals Google Machine Translator de Teacher Forcing-techniek gebruiken om hun model te trainen?
Zoals je al hebt gezien, moet je vorige model licht worden aangepast om Teacher Forcing te gebruiken. In deze oefening breng je de benodigde wijzigingen aan in het vorige model. Je hebt de taalparameters en_len en fr_len (lengte van een gepadde Engelse/Franse zin), en_vocab en fr_vocab (woordenschatgrootte van de Engelse/Franse gegevenssets) en hsize (de grootte van de verborgen laag van de GRU-lagen) gekregen. Onthoud dat de decoder een Franse reeks accepteert met één item minder dan fr_len. We gebruiken de prefix en voor encoder-gerelateerde zaken en de voor decoder-gerelateerde zaken.
Deze oefening maakt deel uit van de cursus
Machine Translation met Keras
Oefeninstructies
- Importeer de submodule
layersuittensorflow.keras. - Haal de encoderoutput en -toestanden op en ken ze respectievelijk toe aan
en_outenen_state. - Definieer een decoder-
Input-laag die eenfr_len-1lange reeks van one-hot-gecodeerde Franse woorden accepteert. - Definieer een
TimeDistributedDensesoftmax-laag metfr_vocabknooppunten.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Import the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)