Treinando o modelo com validação
Aqui você vai treinar o modelo usando Teacher Forcing e também realizar uma etapa de validação. Você vai treinar o modelo por múltiplas épocas e múltiplas iterações. Em seguida, ao final de cada época, você executará a validação e obterá os resultados.
Para isso, foram fornecidos en_text (frases em inglês), fr_text (frases em francês), a função sents2seqs() e nmt_tf (o modelo já compilado). Você também já tem carregados tr_en e tr_fr (dados de treino) e v_en e v_fr (dados de validação).
Este exercício faz parte do curso
Machine Translation with Keras
Instruções do exercício
- Extraia as entradas do decoder (todas as palavras, exceto a última) e as saídas (todas as palavras, exceto a primeira) de
de_xy. - Treine o modelo em um único lote (batch) de dados.
- Crie as entradas e saídas do decoder a partir dos dados de validação da mesma forma que você fez para os dados de treino.
- Avalie o modelo no conjunto de validação para obter a loss de validação e a acurácia.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
for ei in range(n_epochs):
for i in range(0,train_size,bsize):
en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
# Create a single batch of decoder inputs and outputs
de_x, de_y = ____[:,____,:], de_xy[:,____,:]
# Train the model on a single batch of data
nmt_tf.____([____,____], de_y)
v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
# Create a single batch of validation decoder inputs and outputs
v_de_xy = ____('target', ____, onehot=____)
v_de_x, v_de_y = ____[____], v_de_xy[____]
# Evaluate the trained model on the validation data
res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))