Definindo as camadas do modelo Teacher Forcing
Você vai definir uma versão nova e melhorada do modelo de tradução automática que definiu antes. Você sabia que modelos como o Tradutor do Google usaram essa técnica de Teacher Forcing para treinar seu modelo?
Como você já viu, seu modelo anterior precisa mudar um pouco pra adotar o Teacher Forcing. Neste exercício, você vai fazer as mudanças necessárias no modelo anterior. Você recebeu os parâmetros de idioma en_len e fr_len (comprimento das frases em inglês/francês preenchidas), en_vocab e fr_vocab (tamanho do vocabulário dos conjuntos de dados em inglês/francês) e hsize (tamanho da camada oculta das camadas GRU). Lembre-se de que o decodificador aceitará uma sequência em francês com um item a menos que fr_len. Lembre-se de que usamos o prefixo en para falar sobre coisas relacionadas ao codificador e de para coisas relacionadas ao decodificador.
Este exercício faz parte do curso
Tradução automática com Keras
Instruções do exercício
- Importa o submódulo
layersdetensorflow.keras. - Pega os valores de saída e estado do codificador e coloca em
en_outeen_state, respectivamente. - Defina uma camada decodificadora “
Input” que aceite uma sequência longa de palavras francesas codificadas em “onehot” com o tamanho “fr_len-1”. - Defina uma camada softmax de “
TimeDistributedDense” comfr_vocabnós.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Import the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)