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
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çãosents2seqs()
. 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çãosents2seqs()
. As entradas precisam ser codificadas como onehot. - Treine o modelo em um único lote de dados que tenha
en_x
ede_y
. - Pegue as métricas de avaliação para
en_x
ede_y
avaliando o modelo com umbatch_size
debsize
.
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))