ComeçarComece de graça

Treinar o modelo

Você vai treinar o modelo que já implementou neste exercício. Você sabia que o modelo de tradução automática do Google, que usa codificadores e decodificadores, levou de 2 a 4 dias pra ser treinado?

Neste exercício, você vai usar um pequeno conjunto de dados com 1.500 frases (por exemplo, en_text e fr_text) para treinar o modelo. Esse valor dificilmente será suficiente para obter um bom desempenho, mas o método continuará o mesmo. É só uma questão de treinar com mais dados por mais tempo. Você também recebeu o modelo nmt e a função sents2seqs() que implementou anteriormente. Você vai inverter o texto do codificador pra ter um desempenho melhor nesse exercício. Aqui, “ en_x ” é a entrada do codificador, enquanto “ de_x ” é a entrada do decodificador.

Este exercício faz parte do curso

Tradução automática com Keras

Ver curso

Instruções do exercício

  • Pega um único lote de entradas do codificador (frases em inglês do índice i até i+bsize) usando a função sents2seqs(). As entradas precisam ser invertidas e codificadas como onehot.
  • Pega um único lote de saídas do decodificador (frases em francês do índice i até i+bsize) usando a função sents2seqs(). As entradas precisam ser codificadas como onehot.
  • Treine o modelo em um único lote de dados que tenha en_x e de_y.
  • Pegue as métricas de avaliação para en_x e de_y avaliando o modelo com um batch_size de 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