Definindo o codificador
Aqui você vai dar o primeiro passo pra criar um modelo de tradução automática: implementar o codificador. O codificador que você vai implementar é um modelo bem simples em comparação com os modelos complexos usados em aplicações reais, como o serviço de tradução automática do Google. Mas não se preocupe, mesmo que o modelo seja simples, os conceitos são os mesmos dos modelos complexos. Aqui, vamos usar o prefixo en
(por exemplo, en_gru
) pra indicar qualquer coisa relacionada ao codificador e de
pra indicar coisas relacionadas ao decodificador (por exemplo, de_gru
).
Você vai ver que estamos escolhendo en_vocab
para ser menor (150) do que o valor real (228) que encontramos. Reduzir o vocabulário diminui o espaço que o modelo ocupa na memória. Reduzir um pouco o vocabulário é legal, já que a gente tá tirando as palavras mais raras. Nas traduções automáticas, palavras raras geralmente têm menos valor do que palavras comuns.
Este exercício faz parte do curso
Tradução automática com Keras
Instruções do exercício
- Defina uma camada “
Input
” para uma entrada que tenha um vocabulário de tamanhoen_vocab
e um comprimento de sequênciaen_len
, usando o argumento “shape
”. - Defina uma camada de rede neural (
keras.layers.GRU
) que tenha unidades ocultas (hsize
) e retorne seu estado. - Pega as saídas da camada GRU colocando
en_inputs
e atribui o estado GRU aen_state
e a saída aen_out
. - Defina um
keras.models.Model
cuja entrada sejaen_inputs
e a 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.____)