Definindo as camadas do modelo com Teacher Forcing
Você vai definir uma versão nova e aprimorada do modelo de tradução automática que criou antes. Sabia que modelos como o Google Machine Translator usaram a técnica de Teacher Forcing para treinar seus modelos?
Como você já viu, seu modelo anterior precisa mudar um pouco para adotar Teacher Forcing. Neste exercício, você fará as alterações necessárias no modelo anterior. Foram fornecidos os parâmetros de linguagem en_len e fr_len (comprimento de sentenças em inglês/francês com padding), 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 também de que usamos o prefixo en para itens relacionados ao encoder e de para itens relacionados ao decoder.
Este exercício faz parte do curso
Machine Translation with Keras
Instruções do exercício
- Importe o submódulo
layersdetensorflow.keras. - Obtenha a saída e o estado do encoder e atribua-os a
en_outeen_state, respectivamente. - Defina uma camada
Inputdo decodificador que aceite uma sequência de comprimentofr_len-1de palavras em francês codificadas em one-hot. - Defina uma camada
Densecom softmax, envolvida porTimeDistributed, 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)