After the loop exits, the best_params variable refers to the best-performing model on the validation set. If
we repeat this procedure for another model class, or even another random initialization, we should use the
same train/valid/test split of the data, and get other best-performing models. If we have to choose what the
best model class or the best initialization was, we compare the best_validation_loss for each model. When
we have finally chosen the model we think is the best (on validation data), we report that model’s test set
performance. That is the performance we expect on unseen examples.