def top_k_predictions(model, probs, k: int):
    """ Returns the top `k` most probable classes from our model 

    After training a fastai Learner on a multi-label classification problem,
    return the label and probabilities associated with the top `k` most 
    probable classes.

    Args:
        model [Learner]: Fastai Learner trained to do multi-label classification
        probs [Tensor]: Tensor of class probabilities
        k [int]: Number of classes/probabilities to return 

    Returns:
        List [str]: Top k classes
        List [tensor]: Probabilities associated with the top k classess

    """
    
    # Determine all the potential classes our model will choose from 
    classes = model.data.classes
    num_classes = len(classes)

    # Limit k to the total number of classes
    if k > num_classes:
        k = num_classes

    # Get the indices of the `k` classes with highest probabilities
    top_k_indices = probs.argsort(descending=True)[:k]

    labels = []
    probabilities = []

    for i in top_k_indices:
        labels.append(classes[i])
        probabilities.append(probs[i])

    return labels, probabilities