Aan de slagGa gratis aan de slag

Het embeddingmodel definiëren

Je gaat een Keras-model definiëren dat:

  • Embedding-lagen gebruikt
  • Getraind wordt met Teacher Forcing

Dit model heeft twee embedding-lagen: een encoder-embeddinglaag en een decoder-embeddinglaag. Omdat het model wordt getraind met Teacher Forcing, gebruikt het in de decoder-Input-laag een sequentielengte van fr_len-1.

Voor deze oefening zijn alle vereiste keras.layers en Model al geïmporteerd. Daarnaast zijn de variabelen en_len (Engelse sequentielengte), fr_len (Franse sequentielengte), en_vocab (omvang van de Engelse woordenschat), fr_vocab (omvang van de Franse woordenschat) en hsize (hidden size) gedefinieerd.

Deze oefening maakt deel uit van de cursus

Machine Translation met Keras

Cursus bekijken

Oefeninstructies

  • Definieer een Input-laag die een sequentie van woord-ID's accepteert.
  • Definieer een Embedding-laag die en_vocab woorden embedt, lengte 96 heeft en een sequentie van ID's kan accepteren (de sequentielengte geef je op met het argument input_length).
  • Definieer een Embedding-laag die fr_vocab woorden embedt, lengte 96 heeft en een sequentie van fr_len-1 ID's kan accepteren.
  • Definieer een model dat een input van de encoder en een input van de decoder (in die volgorde) neemt en de woordvoorspellingen als output geeft.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)

de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)

# Define the Model which accepts encoder/decoder inputs and outputs predictions 
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
Code bewerken en uitvoeren