def after_train_epoch()

in models/vision/detection/awsdet/core/evaluation/eval_hooks.py [0:0]


    def after_train_epoch(self, runner):
        if not self.every_n_epochs(runner, self.interval):
            return
        self.start_time = time.time()
        # create a loader for this runner
        tf_dataset, num_examples = build_dataloader(self.dataset, 1, 1, num_gpus=runner.local_size, dist=True)
        # num_examples=8
        results = [None for _ in range(num_examples*runner.local_size)] # REVISIT - may require a lot of memory
        #if runner.model.mask:
        if self.dataset.mask:
            masks = [None for _ in range(num_examples*runner.local_size)]
        if runner.rank == 0:
            prog_bar = ProgressBar(num_examples)
        for i, data_batch in enumerate(tf_dataset):
            if i >= num_examples:
                break
            _, img_meta = data_batch
            outputs = runner.model(data_batch, training=False)
            assert isinstance(outputs, dict)
            bboxes = outputs['bboxes']
            # map boxes back to original scale
            bboxes = transforms.bbox_mapping_back(bboxes, img_meta)
            labels = outputs['labels']
            scores = outputs['scores']
            result = transforms.bbox2result(bboxes, labels, scores, num_classes=self.dataset.CLASSES+1) # add background class
            #if runner.model.mask:
            if self.dataset.mask:
                mask = mask2result(outputs['masks'], labels, img_meta[0])
                results[i*runner.local_size+runner.local_rank] = (result, mask)
            else:
                results[i*runner.local_size+runner.local_rank] = result
            if runner.rank == 0:
                prog_bar.update()
        # write to a file
        tmp_file = osp.join(runner.work_dir, 'temp_{}.pkl'.format(runner.rank))
        if runner.rank != 0:
            dump(results, tmp_file)
            # open(tmp_file+'.done', 'w').close()
        # MPI barrier through horovod
        _ = get_barrier()
        self._accumulate_results(runner, results, num_examples)
        del tf_dataset