Evaluation loop used by `EpochBasedTrainer.evaluate()`.
(self, data_loader, metric_classes)
| 1272 | return result |
| 1273 | |
| 1274 | def evaluation_loop(self, data_loader, metric_classes): |
| 1275 | """ Evaluation loop used by `EpochBasedTrainer.evaluate()`. |
| 1276 | |
| 1277 | """ |
| 1278 | vis_closure = None |
| 1279 | if hasattr(self.cfg.evaluation, 'visualization'): |
| 1280 | vis_cfg = self.cfg.evaluation.visualization |
| 1281 | vis_closure = partial( |
| 1282 | self.visualization, dataset=self.eval_dataset, **vis_cfg) |
| 1283 | |
| 1284 | self.invoke_hook(TrainerStages.before_val) |
| 1285 | if self._dist: |
| 1286 | from modelscope.trainers.utils.inference import multi_gpu_test |
| 1287 | # list of batched result and data samples |
| 1288 | metric_values = multi_gpu_test( |
| 1289 | self, |
| 1290 | data_loader, |
| 1291 | device=self.device, |
| 1292 | metric_classes=metric_classes, |
| 1293 | vis_closure=vis_closure, |
| 1294 | tmpdir=self.cfg.evaluation.get('cache_dir', None), |
| 1295 | gpu_collect=self.cfg.evaluation.get('gpu_collect', False), |
| 1296 | data_loader_iters_per_gpu=self._eval_iters_per_epoch) |
| 1297 | else: |
| 1298 | from modelscope.trainers.utils.inference import single_gpu_test |
| 1299 | metric_values = single_gpu_test( |
| 1300 | self, |
| 1301 | data_loader, |
| 1302 | device=self.device, |
| 1303 | metric_classes=metric_classes, |
| 1304 | vis_closure=vis_closure, |
| 1305 | data_loader_iters=self._eval_iters_per_epoch) |
| 1306 | |
| 1307 | self.invoke_hook(TrainerStages.after_val) |
| 1308 | return metric_values |
| 1309 | |
| 1310 | def visualization(self, batch_result, dataset, **kwargs): |
| 1311 | """ visualization function for evaluation results. |
no test coverage detected