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
layers
detensorflow.keras
. - Pega os valores de saída e estado do codificador e coloca em
en_out
een_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 “
TimeDistributed
Dense
” comfr_vocab
nó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)