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

Function eval_epoch

classification/main_deepspeed.py:282–333  ·  view source on GitHub ↗
(config, data_loader, model, epoch=None)

Source from the content-addressed store, hash-verified

280
281@torch.no_grad()
282def eval_epoch(config, data_loader, model, epoch=None):
283 criterion = torch.nn.CrossEntropyLoss()
284 model.eval()
285
286 batch_time = AverageMeter()
287 loss_meter = AverageMeter()
288 acc1_meter = AverageMeter()
289 acc5_meter = AverageMeter()
290
291 end = time.time()
292 for idx, (images, target) in enumerate(data_loader):
293 images = images.cuda(non_blocking=True)
294 target = target.cuda(non_blocking=True)
295 output = model(images)
296
297 # convert 22k to 1k to evaluate
298 if output.size(-1) == 21841:
299 convert_file = './meta_data/map22kto1k.txt'
300 with open(convert_file, 'r') as f:
301 convert_list = [int(line) for line in f.readlines()]
302 output = output[:, convert_list]
303
304 # measure accuracy and record loss
305 loss = criterion(output, target)
306 acc1, acc5 = accuracy(output, target, topk=(1, 5))
307
308 acc1 = reduce_tensor(acc1)
309 acc5 = reduce_tensor(acc5)
310 loss = reduce_tensor(loss)
311
312 loss_meter.update(loss.item(), target.size(0))
313 acc1_meter.update(acc1.item(), target.size(0))
314 acc5_meter.update(acc5.item(), target.size(0))
315
316 # measure elapsed time
317 batch_time.update(time.time() - end)
318 end = time.time()
319
320 if idx % config.PRINT_FREQ == 0:
321 memory_used = torch.cuda.max_memory_allocated() / (1024.0 * 1024.0)
322 logger.info(f'Test: [{idx}/{len(data_loader)}]\t'
323 f'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
324 f'Loss {loss_meter.val:.4f} ({loss_meter.avg:.4f})\t'
325 f'Acc@1 {acc1_meter.val:.3f} ({acc1_meter.avg:.3f})\t'
326 f'Acc@5 {acc5_meter.val:.3f} ({acc5_meter.avg:.3f})\t'
327 f'Mem {memory_used:.0f}MB')
328 if epoch is not None:
329 logger.info(f'[Epoch:{epoch}] * Acc@1 {acc1_meter.avg:.3f} Acc@5 {acc5_meter.avg:.3f}')
330 else:
331 logger.info(f' * Acc@1 {acc1_meter.avg:.3f} Acc@5 {acc5_meter.avg:.3f}')
332
333 return acc1_meter.avg, acc5_meter.avg, loss_meter.avg
334
335
336def train(config, ds_config):

Callers 2

trainFunction · 0.70
evalFunction · 0.70

Calls 3

reduce_tensorFunction · 0.90
accuracyFunction · 0.85
updateMethod · 0.80

Tested by

no test coverage detected