Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Definiera ett Input-lager som tar emot en sekvens av ords ID:n.
  • Definiera ett Embedding-lager som bäddar in en_vocab ord, har längden 96 och kan ta emot en sekvens av ID:n (sekvenslängden anges med argumentet input_length).
  • Definiera ett Embedding-lager som bäddar in fr_vocab ord, har längden 96 och kan ta emot en sekvens av fr_len-1 ID: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'])
Redigera och kör kod