Definindo o modelo de incorporação
Você vai definir um modelo Keras que:
- Usa camadas de
Embedding
- Vai ser treinado com o Professor Forcing
Esse modelo vai ter duas camadas de incorporação: uma camada de incorporação do codificador e uma camada de incorporação do decodificador. Além disso, como o modelo é treinado usando Teacher Forcing, ele vai usar um comprimento de sequência de fr_len-1
na camada decodificadora Input
.
Para este exercício, você já importou todos os keras.layers
e Model
necessários. Além disso, foram definidas 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 oculto).
Este exercício faz parte do curso
Tradução automática com Keras
Instruções do exercício
- Defina uma camada “
Input
” que aceita uma sequência de IDs de palavras. - Defina uma camada “
Embedding
” que inclua palavras “en_vocab
”, 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 inclua palavras “fr_vocab
”, tenha comprimento 96 e possa aceitar uma sequência de IDs “fr_len-1
”. - Defina um modelo que receba uma entrada do codificador e uma entrada do decodificador (nessa ordem) e gere as previsões das 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'])