Treinando o modelo com validação
Aqui você vai aprender a treinar o modelo de tradução automática neural com uma etapa de validação.
Você tem disponível o modelo nmt que criou no capítulo anterior. Além disso, você treinará o modelo com sentenças em inglês e francês obtidas do repositório do Udacity no Github. Você recebeu o texto de treino em inglês (tr_en) e em francês (tf_fr), assim como o texto de validação em inglês (v_en) e em francês (v_fr) do exercício anterior.
Treinar o modelo leva um pouco de tempo, então seu código pode demorar um pouco mais para executar.
Este exercício faz parte do curso
Machine Translation with Keras
Instruções do exercício
- Crie os dados de validação transformando
v_enev_frusando a funçãosents2seqs. - Obtenha um batch devidamente transformado de entradas e saídas usando a função
sents2seqs. - Use as entradas (
en_x) e saídas (de_y) para treinar onmtem um único batch. - Use
v_en_xev_de_yjunto comvalid_sizecomobatch_sizepara avaliar o modelonmte obter a acurácia de validação.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Convert validation data to onehot
v_en_x = ____(____, ____, onehot=____, reverse=____)
v_de_y = ____(____, ____, onehot=True)
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,train_size,bsize):
# Get a single batch of inputs and outputs
en_x = ____(____, tr_en[____:____], onehot=____, reverse=____)
de_y = sents2seqs(____, tr_fr[____:____], onehot=True)
# Train the model on a single batch of data
nmt.____(____, ____)
# Evaluate the trained model on the validation data
res = nmt.evaluate(____, ____, batch_size=valid_size, verbose=0)
print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))