def METHOD_NAME(model, classifier, dataloader, device, amp=True):
    """
    Run zero-shot classifcation
    model: torch.nn.Module
        CLIP-like model with `encode_image` and `encode_text`
    classifier: torch.Tensor
        obtained from the function `zero_shot_classifier`
    dataloader: torch.utils.data.Dataloader 
    Returns
    -------
    (pred, true)  where
        - pred (N, C) are the logits
        - true (N,) are the actual classes
    """
    autocast = torch.cuda.amp.autocast if amp else suppress
    pred = []
    true = []
    nb = 0
    with torch.no_grad():
        for images, target in tqdm(dataloader):
            # print(images)
            # images = images.to(device)
            if isinstance(images,torch.Tensor):
                images = images.to(device)
            else:
                images['pixel_values'] = torch.cat(images['pixel_values']).to(device)
            target = target.to(device)
            with autocast():
                image_features = model.get_image_features(**images)
                image_features = F.normalize(image_features, dim=-1)
                logits = 100. * image_features @ classifier
            true.append(target.cpu())
            pred.append(logits.cpu())
    pred = torch.cat(pred)
    true = torch.cat(true)
    return pred, true