Definiera inbäddningsmodellen
I den här övningen ska du definiera en Keras-modell som:
- Använder
Embedding-lager - Tränas med Teacher Forcing
Modellen kommer att ha två inbäddningslager – ett för kodaren och ett för avkodaren. Eftersom modellen tränas med Teacher Forcing används en sekvenslängd på fr_len-1 i avkodarens Input-lager.
För den här övningen är alla nödvändiga keras.layers och Model redan importerade. Variablerna en_len (engelsk sekvenslängd), fr_len (fransk sekvenslängd), en_vocab (engelsk vokabulärstorlek), fr_vocab (fransk vokabulärstorlek) och hsize (dold storlek) är också definierade.
Den här övningen är en del av kursen
Maskinöversättning med Keras
Övningsinstruktioner
- Definiera ett
Input-lager som tar emot en sekvens av ords ID:n. - Definiera ett
Embedding-lager som bäddar inen_vocabord, har längden 96 och kan ta emot en sekvens av ID:n (sekvenslängden anges med argumentetinput_length). - Definiera ett
Embedding-lager som bäddar infr_vocabord, har längden 96 och kan ta emot en sekvens avfr_len-1ID:n. - Definiera en modell som tar emot indata från kodaren och indata från avkodaren (i den ordningen) och returnerar ordprediktioner.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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'])