Definindo o codificador
Aqui você vai dar o primeiro passo para criar um modelo de tradução: implementar o codificador (encoder). O codificador que você vai implementar é bem simples se comparado aos modelos complexos usados em aplicações reais, como o serviço de tradução do Google. Mas não se preocupe: embora o modelo seja simples, os conceitos são os mesmos dos modelos mais complexos. Aqui vamos usar o prefixo en (por exemplo, en_gru) para indicar qualquer coisa relacionada ao encoder e de para indicar itens do decoder (por exemplo, de_gru).
Você vai notar que estamos escolhendo en_vocab menor (150) do que o valor real (228) que encontramos. Tornar o vocabulário menor reduz o consumo de memória do modelo. Reduzir um pouco o vocabulário é aceitável, pois estamos removendo as palavras mais raras ao fazer isso. Em tarefas de tradução automática, palavras raras geralmente têm menos importância do que palavras comuns.
Este exercício faz parte do curso
Machine Translation with Keras
Instruções do exercício
- Defina uma camada
Inputpara uma entrada com tamanho de vocabulárioen_vocabe comprimento de sequênciaen_len, usando o argumentoshape. - Defina uma camada
keras.layers.GRUcomhsizeunidades ocultas e que retorne seu estado. - Obtenha as saídas da camada GRU alimentando
en_inputse atribua o estado da GRU aen_statee a saída aen_out. - Defina um
keras.models.Modelcujo input sejaen_inputse cuja saída sejaen_state, e imprima o resumo do modelo.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
import tensorflow.keras as keras
en_len = 15
en_vocab = 150
hsize = 48
# Define an input layer
en_inputs = keras.layers.____(____=____)
# Define a GRU layer which returns the state
en_gru = ____(____, ____=____)
# Get the output and state from the GRU
____, ____ = ____(____)
# Define and print the model summary
encoder = ____(inputs=____, ____=____)
print(encoder.____)