Get startedGet started for free

Training the model with validation

Here you will train the model using Teacher Forcing and also perform a validation step. You will train the model for multiple epochs and multiple iterations. Then at the end of each epoch, you will run the validation step and obtain the results.

For this, you have been provided with en_text (English sentences), fr_text (French sentences), the sents2seqs() function and nmt_tf (the compiled model). You also have tr_en and tr_fr (training data) and v_en and v_fr (validation data) loaded already.

This exercise is part of the course

Machine Translation with Keras

View Course

Exercise instructions

  • Extract decoder inputs (all words except the last) and outputs (all words except the first) from de_xy.
  • Train the model on a single batch of data.
  • Create decoder inputs and outputs from the validation data similar to how you did for training data.
  • Evaluate the model on the validation dataset to obtain the validation loss and the accuracy.

Hands-on interactive exercise

Have a go at this exercise by completing this sample code.

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))
Edit and Run Code