def METHOD_NAME(self, evaluate, model_file):
    """ Evaluation Loop """
    self.model.METHOD_NAME() # evaluation mode
    self.load(model_file, None)
    model = self.model.to(self.device)
    if self.cfg.data_parallel: # use Data Parallelism with Multi-GPU
        model = nn.DataParallel(model)
    results = [] # prediction results
    iter_bar = tqdm(self.data_iter, desc='Iter (loss=X.XXX)')
    for batch in iter_bar:
        batch = [t.to(self.device) for t in batch]
        with torch.no_grad(): # evaluation without gradient calculation
            accuracy, result = evaluate(model, batch) # accuracy to print
        results.append(result)
        iter_bar.set_description('Iter(acc=%5.3f)'%accuracy)
    return results