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
Instrucțiuni pentru exercițiu
- Definește un strat
Inputcare acceptă o secvență de ID-uri de cuvinte. - Definește un strat
Embeddingcare încorporeazăen_vocabcuvinte, are lungimea 96 și poate accepta o secvență de ID-uri (lungimea secvenței se specifică prin argumentulinput_length). - Definește un strat
Embeddingcare încorporeazăfr_vocabcuvinte, are lungimea 96 și poate accepta o secvență defr_len-1ID-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'])