MCPcopy Index your code
hub / github.com/OpenGVLab/InternVL / validate_real

Function validate_real

classification/main.py:539–601  ·  view source on GitHub ↗
(config, data_loader, model, real_labels, amp_autocast=suppress)

Source from the content-addressed store, hash-verified

537
538@torch.no_grad()
539def validate_real(config, data_loader, model, real_labels, amp_autocast=suppress):
540 # https://github.com/baaivision/EVA/blob/master/EVA-01/eva/engine_for_finetuning.py#L195
541 criterion = torch.nn.CrossEntropyLoss()
542 model.eval()
543
544 batch_time = AverageMeter()
545 loss_meter = AverageMeter()
546 acc1_meter = AverageMeter()
547 acc5_meter = AverageMeter()
548
549 end = time.time()
550 amp_type = torch.float16 if config.AMP_TYPE == 'float16' else torch.bfloat16
551 for idx, (images, target) in enumerate(data_loader):
552 images = images.cuda(non_blocking=True)
553 target = target.cuda(non_blocking=True)
554 if not obsolete_torch_version(TORCH_VERSION, (1, 9)) and config.AMP_OPT_LEVEL != 'O0':
555 with amp_autocast(dtype=amp_type):
556 output = model(images)
557 else:
558 with amp_autocast():
559 output = model(images)
560
561 # convert 22k to 1k to evaluate
562 if output.size(-1) == 21841:
563 convert_file = './meta_data/map22kto1k.txt'
564 with open(convert_file, 'r') as f:
565 convert_list = [int(line) for line in f.readlines()]
566 output = output[:, convert_list]
567
568 real_labels.add_result(output)
569
570 # measure accuracy and record loss
571 loss = criterion(output, target)
572 acc1, acc5 = accuracy(output, target, topk=(1, 5))
573
574 acc1 = reduce_tensor(acc1)
575 acc5 = reduce_tensor(acc5)
576 loss = reduce_tensor(loss)
577
578 loss_meter.update(loss.item(), target.size(0))
579 acc1_meter.update(acc1.item(), target.size(0))
580 acc5_meter.update(acc5.item(), target.size(0))
581
582 # measure elapsed time
583 batch_time.update(time.time() - end)
584 end = time.time()
585
586 if idx % config.PRINT_FREQ == 0:
587 memory_used = torch.cuda.max_memory_allocated() / (1024.0 * 1024.0)
588 logger.info(f'Test: [{idx}/{len(data_loader)}]\t'
589 f'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
590 f'Loss {loss_meter.val:.4f} ({loss_meter.avg:.4f})\t'
591 f'Acc@1 {acc1_meter.val:.3f} ({acc1_meter.avg:.3f})\t'
592 f'Acc@5 {acc5_meter.val:.3f} ({acc5_meter.avg:.3f})\t'
593 f'Mem {memory_used:.0f}MB')
594
595 # real labels mode replaces topk values at the end
596 top1a, top5a = real_labels.get_accuracy(k=1), real_labels.get_accuracy(k=5)

Callers 1

mainFunction · 0.85

Calls 6

reduce_tensorFunction · 0.90
obsolete_torch_versionFunction · 0.85
accuracyFunction · 0.85
add_resultMethod · 0.80
updateMethod · 0.80
get_accuracyMethod · 0.80

Tested by

no test coverage detected