docs: def validate(self, validation_instances, metrics, iteration=None):
          '''
          Evaluate this model on `validation_instances` during training and
          output a report.
  
          :param validation_instances: The data to use to validate the model.
          :type validation_instances: list(instance.Instance)
  
          :param metrics: Functions like those found in the `metrics` module
              for quantifying the performance of the learner.
          :type metrics: list(function)
  
          :param iteration: A label (anything with a sensible `str()` conversion)
              identifying the current iteration in output.
          '''
          if not validation_instances or not metrics:
              return {}
          split_id = 'val%s' % iteration if iteration is not None else 'val'
          train_results = evaluate.evaluate(self, validation_instances,
                                            metrics=metrics, split_id=split_id)
          output.output_results(train_results, split_id)
          return train_results