def process_history()

in demucs/grids/_explorers.py [0:0]


    def process_history(self, history):
        train = {
            'epoch': len(history),
        }
        valid = {}
        test = {}
        best_v_main = float('inf')
        breco = float('inf')
        for metrics in history:
            train.update(metrics['train'])
            valid.update(metrics['valid'])
            if 'main' in metrics['valid']:
                best_v_main = min(best_v_main, metrics['valid']['main']['loss'])
            valid['bmain'] = best_v_main
            valid['breco'] = min(breco, metrics['valid']['reco'])
            breco = valid['breco']
            if (metrics['valid']['loss'] == metrics['valid']['best'] or
                    metrics['valid'].get('nsdr') == metrics['valid']['best']):
                for k, v in metrics['valid'].items():
                    if k.startswith('reco_'):
                        valid['b_' + k[len('reco_'):]] = v
                    if k.startswith('nsdr'):
                        valid[f'b_{k}'] = v
            if 'test' in metrics:
                test.update(metrics['test'])
            metrics = history[-1]
        return {"train": train, "valid": valid, "test": test}