Definindo o decodificador do modelo de inferência
O modelo de inferência é o modelo que vai ser usado na prática para fazer traduções quando o usuário precisar. Neste exercício, você vai precisar implementar o decodificador do modelo de inferência.
O decodificador do modelo de inferência é diferente do decodificador do modelo de treinamento. Não dá pra alimentar o decodificador com palavras em francês, porque é isso que a gente quer prever. Felizmente, tem uma solução. A gente pode usar a palavra em francês que a gente previu no passo anterior pra alimentar o decodificador do modelo de inferência. Então, quando você quer traduzir algo, o decodificador precisa traduzir uma palavra de cada vez, usando o que já foi traduzido como entrada.

Para este exercício, as variáveis hsize
(tamanho oculto da camada GRU
), fr_len
e fr_vocab
foram importadas. Lembre-se de que o prefixo “ de
” é usado pra se referir ao decodificador.
Este exercício faz parte do curso
Tradução automática com Keras
Instruções do exercício
- Defina uma camada “
Input
” que aceita um lote de sequências de palavras em francês codificadas como onehot (comprimento da sequência 1). - Defina outra camada “
Input
” que aceita um lote de estados “hsize
”, que você vai usar para passar o estado anterior para o decodificador. - Pega a saída e o estado do decodificador
GRU
. - Defina um modelo que aceite as palavras em francês “
Input
” e o estado anterior “Input
” e mostre a previsão final e o novo estado “GRU
”.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)
# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())