def my_eval(model, stream, metrics):
    """Evaluate `model` on `stream` computing `metrics`.

    Returns a dictionary {metric_name: list-of-results}.
    """
    model.eval()
    res = {uo.__class__.__name__: [] for uo in metrics}
    for exp in stream:
        [uo.reset() for uo in metrics]
        dl = DataLoader(exp.dataset.eval(), batch_size=512, num_workers=8)
        for x, y, _ in dl:
            x, y = x.cuda(), y.cuda()
            yp = model(x)
            [uo.update(yp, y) for uo in metrics]
        [res[uo.__class__.__name__].append(uo.result()) for uo in metrics]
    return res
Evaluate `model` on `stream` computing `metrics`.

    Returns a dictionary {metric_name: list-of-results}.
    
examples/updatable_objects.py