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
Instruções do exercício
- Obtenha um único lote de entradas do encoder (frases em inglês do índice
iatéi+bsize) usando a funçãosents2seqs(). As entradas precisam ser invertidas e one-hot encoded. - Obtenha um único lote de saídas do decoder (frases em francês do índice
iatéi+bsize) usando a funçãosents2seqs(). As entradas precisam ser one-hot encoded. - Treine o modelo em um único lote de dados contendo
en_xede_y. - Obtenha as métricas de avaliação para
en_xede_yavaliando o modelo combatch_sizeigual absize.
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))