'Runs prediction on ``eval_data`` and evaluates the performance according to
the given ``eval_metric``.
Checkout `Module Tutorial <http://mxnet.io/tutorials/basic/module.html>`_ to see
a end-to-end use-case.
Parameters
eval_data : DataIter
Evaluation data to run prediction on.
eval_metric : EvalMetric or list of EvalMetrics
Evaluation metric to use.
num_batch : int
Number of batches to run. Defaults to ``None``, indicating run until the `DataIter`
finishes.
batch_end_callback : function
Could also be a list of functions.
reset : bool
Defaults to ``True``. Indicates whether we should reset `eval_data` before starting
evaluating.
epoch : int
Defaults to 0. For compatibility, this will be passed to callbacks (if any).
During training, this will correspond to the training epoch number.
Examples
>>> # An example of using score for prediction.
>>> # Evaluate accuracy on val_dataiter
>>> metric = mx.metric.Accuracy()
>>> mod.score(val_dataiter, metric)
>>> mod.score(val_dataiter, [\'mse\', \'acc\'])'

def score(self, eval_data, eval_metric, num_batch=None, batch_end_callback=None, score_end_callback=None, reset=True, epoch=0):

    assert (self.binded and self.params_initialized)
    if reset:
        eval_data.reset()
    if (not isinstance(eval_metric, metric.EvalMetric)):
        eval_metric = metric.create(eval_metric)
    eval_metric.reset()
    actual_num_batch = 0
    for (nbatch, eval_batch) in enumerate(eval_data):
        if ((num_batch is not None) and (nbatch == num_batch)):
            break
        self.forward(eval_batch, is_train=False)
        self.update_metric(eval_metric, eval_batch.label)
        if (batch_end_callback is not None):
            batch_end_params = BatchEndParam(epoch=epoch, nbatch=nbatch, eval_metric=eval_metric, locals=locals())
            for callback in _as_list(batch_end_callback):
                callback(batch_end_params)
        actual_num_batch += 1
    if score_end_callback:
        params = BatchEndParam(epoch=epoch, nbatch=actual_num_batch, eval_metric=eval_metric, locals=locals())
        for callback in _as_list(score_end_callback):
            callback(params)
    return eval_metric.get_name_value()
