MCPcopy Create free account
hub / github.com/TorchSSL/TorchSSL / evaluate

Method evaluate

models/freematch_entropy/freematch.py:341–373  ·  view source on GitHub ↗
(self, eval_loader=None, args=None)

Source from the content-addressed store, hash-verified

339
340 @torch.no_grad()
341 def evaluate(self, eval_loader=None, args=None):
342 self.model.eval()
343 self.ema.apply_shadow()
344 if eval_loader is None:
345 eval_loader = self.loader_dict['eval']
346 total_loss = 0.0
347 total_num = 0.0
348 y_true = []
349 y_pred = []
350 y_logits = []
351 for _, x, y in eval_loader:
352 x, y = x.cuda(args.gpu), y.cuda(args.gpu)
353 num_batch = x.shape[0]
354 total_num += num_batch
355 logits = self.model(x)
356 loss = F.cross_entropy(logits, y, reduction='mean')
357 y_true.extend(y.cpu().tolist())
358 y_pred.extend(torch.max(logits, dim=-1)[1].cpu().tolist())
359 y_logits.extend(torch.softmax(logits, dim=-1).cpu().tolist())
360 total_loss += loss.detach() * num_batch
361 top1 = accuracy_score(y_true, y_pred)
362 top5 = top_k_accuracy_score(y_true, y_logits, k=5)
363 precision = precision_score(y_true, y_pred, average='macro')
364 recall = recall_score(y_true, y_pred, average='macro')
365 F1 = f1_score(y_true, y_pred, average='macro')
366 AUC = roc_auc_score(y_true, y_logits, multi_class='ovo')
367
368 cf_mat = confusion_matrix(y_true, y_pred, normalize='true')
369 self.print_fn('confusion matrix:\n' + np.array_str(cf_mat))
370 self.ema.restore()
371 self.model.train()
372 return {'eval/loss': total_loss / total_num, 'eval/top-1-acc': top1, 'eval/top-5-acc': top5,
373 'eval/precision': precision, 'eval/recall': recall, 'eval/F1': F1, 'eval/AUC': AUC}
374
375 def save_model(self, save_name, save_path):
376 save_filename = os.path.join(save_path, save_name)

Callers 1

trainMethod · 0.95

Calls 3

apply_shadowMethod · 0.80
restoreMethod · 0.80
trainMethod · 0.45

Tested by

no test coverage detected