ComeçarComece de graça

Treinar o modelo com validação

Aqui você vai treinar o modelo usando o Teacher Forcing e também fazer uma etapa de validação. Você vai treinar o modelo por várias épocas e várias iterações. Então, no final de cada época, você vai fazer a etapa de validação e ver os resultados.

Para isso, você tem en_text (frases em inglês), fr_text (frases em francês), a função sents2seqs() e nmt_tf (o modelo compilado). Você também já tem tr_en e tr_fr (dados de treinamento) e v_en e v_fr (dados de validação) carregados.

Este exercício faz parte do curso

Tradução automática com Keras

Ver curso

Instruções do exercício

  • Extraia as entradas do decodificador (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 de dados.
  • Crie entradas e saídas do decodificador a partir dos dados de validação, da mesma forma que você fez com os dados de treinamento.
  • A gente avalia o modelo no conjunto de dados de validação pra ver a perda de validação e a precisão.

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))
Editar e executar o código