ÎncepețiÎncepe gratuit

Definirea modelului cu încorporări (embeddings)

Vei defini un model Keras care:

  • Folosește straturi Embedding
  • Va fi antrenat cu Teacher Forcing

Acest model va avea două straturi de încorporare: un strat de încorporare pentru encoder și unul pentru decoder. De asemenea, deoarece modelul este antrenat cu Teacher Forcing, va folosi o lungime de secvență fr_len-1 în stratul Input al decoderului.

Pentru acest exercițiu, ai deja importate toate keras.layers necesare și clasa Model. De asemenea, sunt definite variabilele en_len (lungimea secvenței în engleză), fr_len (lungimea secvenței în franceză), en_vocab (dimensiunea vocabularului în engleză), fr_vocab (dimensiunea vocabularului în franceză) și hsize (dimensiunea stratului ascuns).

Acest exercițiu face parte din cursul

Traducere automată cu Keras

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește un strat Input care acceptă o secvență de ID-uri de cuvinte.
  • Definește un strat Embedding care încorporează en_vocab cuvinte, are lungimea 96 și poate accepta o secvență de ID-uri (lungimea secvenței se specifică prin argumentul input_length).
  • Definește un strat Embedding care încorporează fr_vocab cuvinte, are lungimea 96 și poate accepta o secvență de fr_len-1 ID-uri.
  • Definește un model care primește o intrare de la encoder și o intrare de la decoder (în această ordine) și returnează predicțiile pentru cuvinte.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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'])
Editează și rulează codul