ComeçarComece de graça

Definindo o decodificador do modelo de inferência

O modelo de inferência é o modelo que será usado no mundo real para realizar traduções quando solicitado pelo usuário. Neste exercício, você vai implementar o decodificador do modelo de inferência.

O decodificador de inferência é diferente do decodificador do modelo de treinamento. Não podemos alimentar o decodificador com palavras em francês, porque é isso que queremos prever. Por sorte, há uma solução. Podemos usar a palavra em francês prevista no passo de tempo anterior para alimentar o decodificador do modelo de inferência. Assim, quando você quiser gerar uma tradução, o decodificador precisa gerar uma palavra por vez, consumindo a saída anterior como entrada.

Para este exercício, as variáveis hsize (tamanho oculto da camada GRU), fr_len e fr_vocab já foram importadas. Lembre-se de que o prefixo de é usado para se referir ao decodificador.

Este exercício faz parte do curso

Machine Translation with Keras

Ver curso

Instruções do exercício

  • Defina uma camada Input que aceite um lote de sequências de palavras em francês codificadas em one-hot (comprimento de sequência 1).
  • Defina outra camada Input que aceite um lote de estados de tamanho hsize, que você usará para alimentar o estado anterior no decodificador.
  • Obtenha a saída e o estado da GRU do decodificador.
  • Defina um modelo que aceite o Input das palavras em francês e o Input do estado anterior e produza a previsão final e o novo estado da GRU.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)

# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())
Editar e executar o código