ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Crie os dados de validação transformando v_en e v_fr usando a função sents2seqs.
  • 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 o nmt em um único batch.
  • Use v_en_x e v_de_y junto com valid_size como batch_size para avaliar o modelo nmt e 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))
Editar e executar o código