ComeçarComece de graça

Treinando o modelo

Neste exercício, você vai treinar o modelo implementado anteriormente. Você sabia que o modelo de tradução automática do Google, baseado em encoder-decoder, levou de 2 a 4 dias para treinar?

Para este exercício, você usará um conjunto de dados pequeno, com 1500 frases (ou seja, en_text e fr_text), para treinar o modelo. Esse volume dificilmente será suficiente para um bom desempenho, mas o método é o mesmo. Basta treinar por mais tempo com mais dados. Você também recebeu o modelo nmt e a função sents2seqs() que implementou anteriormente. Você vai inverter o texto do encoder para obter melhor desempenho neste exercício. Aqui, en_x se refere à entrada do encoder, enquanto de_x se refere à entrada do decoder.

Este exercício faz parte do curso

Machine Translation with Keras

Ver curso

Instruções do exercício

  • Obtenha um único lote de entradas do encoder (frases em inglês do índice i até i+bsize) usando a função sents2seqs(). As entradas precisam ser invertidas e one-hot encoded.
  • Obtenha um único lote de saídas do decoder (frases em francês do índice i até i+bsize) usando a função sents2seqs(). As entradas precisam ser one-hot encoded.
  • Treine o modelo em um único lote de dados contendo en_x e de_y.
  • Obtenha as métricas de avaliação para en_x e de_y avaliando o modelo com batch_size igual a bsize.

Exercício interativo prático

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

n_epochs, bsize = 3, 250

for ei in range(n_epochs):
  for i in range(0,data_size,bsize):
    # Get a single batch of encoder inputs
    en_x = ____('source', ____, onehot=____, reverse=____)
    # Get a single batch of decoder outputs
    de_y = sents2seqs('target', fr_text[____], onehot=____)
    
    # Train the model on a single batch of data
    nmt.____(____, ____)    
    # Obtain the eval metrics for the training data
    res = nmt.____(____, de_y, batch_size=____, verbose=0)
    print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))  
Editar e executar o código