def METHOD_NAME(self, test_data, device, args):
    num_examples = 0
    batch_acc = []
    batch_loss = []
    for batch_idx, (x, target) in enumerate(test_data):
        data = gluon.utils.split_and_load(x, ctx_list=[device], batch_axis=0)
        label = gluon.utils.split_and_load(
            target, ctx_list=[device], batch_axis=0
        )
        outputs = list()
        for x_item in data:
            pred = self.model(x_item)
            pred = npx.softmax(pred)
            outputs.append(pred)
            num_examples += len(x_item)
        self.metrics.update(label, outputs)
        acc, loss = self.metrics.get_name_value()
        batch_acc.append(acc[1])
        batch_loss.append(loss[1])
    ret_metrics = dict()
    ret_metrics["test_precision"] = 0,
    ret_metrics["test_recall"] = 0
    ret_metrics["test_acc"] = sum(batch_acc) / len(batch_acc)
    ret_metrics["test_loss"] = sum(batch_loss) / len(batch_loss)
    ret_metrics["test_total"] = num_examples
    return ret_metrics