ComeçarComece de graça

Definindo o modelo com embeddings

Você vai definir um modelo Keras que:

  • Usa camadas Embedding
  • Será treinado com Teacher Forcing

Esse modelo terá duas camadas de embedding: uma para o codificador (encoder) e outra para o decodificador (decoder). Além disso, como o modelo é treinado usando Teacher Forcing, ele usará um comprimento de sequência de fr_len-1 na camada Input do decodificador.

Neste exercício, você já tem todos os keras.layers necessários e Model importados. Além disso, as variáveis en_len (comprimento da sequência em inglês), fr_len (comprimento da sequência em francês), en_vocab (tamanho do vocabulário em inglês), fr_vocab (tamanho do vocabulário em francês) e hsize (tamanho do estado oculto) já foram definidas.

Este exercício faz parte do curso

Machine Translation with Keras

Ver curso

Instruções do exercício

  • Defina uma camada Input que aceite uma sequência de IDs de palavras.
  • Defina uma camada Embedding que incorpore en_vocab palavras, tenha comprimento 96 e possa aceitar uma sequência de IDs (o comprimento da sequência é especificado usando o argumento input_length).
  • Defina uma camada Embedding que incorpore fr_vocab palavras, tenha comprimento 96 e possa aceitar uma sequência de fr_len-1 IDs.
  • Defina um modelo que receba uma entrada do codificador e uma entrada do decodificador (nessa ordem) e produza as previsões de palavras.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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'])
Editar e executar o código