Bird
Raised Fist0
Computer Visionml~20 mins

Top-K accuracy in Computer Vision - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Top-K Accuracy Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Understanding Top-K Accuracy Concept

Imagine you have a model that predicts the top 3 possible labels for an image. The true label is among these 3 predictions. What does this mean about the model's Top-3 accuracy?

AThe model's Top-3 accuracy counts this prediction as correct because the true label is in the top 3 guesses.
BThe model's Top-3 accuracy counts this prediction as incorrect because only the top 1 prediction matters.
CThe model's Top-3 accuracy ignores this prediction since it only considers the top 5 guesses.
DThe model's Top-3 accuracy counts this prediction as correct only if the true label is the first guess.
Attempts:
2 left
💡 Hint

Top-K accuracy checks if the true label is within the top K predictions, not just the first one.

Predict Output
intermediate
2:00remaining
Output of Top-2 Accuracy Calculation

Given the following predictions and true labels, what is the Top-2 accuracy?

predictions = [[0.1, 0.7, 0.2], [0.6, 0.3, 0.1], [0.2, 0.2, 0.6]]
true_labels = [1, 0, 2]

Each inner list shows predicted probabilities for classes 0, 1, and 2.

Computer Vision
import numpy as np

def top_k_accuracy(preds, labels, k):
    correct = 0
    for pred, label in zip(preds, labels):
        top_k = np.argsort(pred)[-k:][::-1]
        if label in top_k:
            correct += 1
    return correct / len(labels)

predictions = [[0.1, 0.7, 0.2], [0.6, 0.3, 0.1], [0.2, 0.2, 0.6]]
true_labels = [1, 0, 2]

result = top_k_accuracy(predictions, true_labels, 2)
print(result)
A1.0
B0.0
C0.33
D0.67
Attempts:
2 left
💡 Hint

Check if each true label is in the top 2 predicted classes by probability.

Model Choice
advanced
2:00remaining
Choosing Model for High Top-5 Accuracy

You want a model that performs well on Top-5 accuracy for a dataset with 100 classes. Which model architecture is best suited for this goal?

AA model that outputs only the top predicted class without probabilities.
BA model with a single sigmoid output for binary classification.
CA model with a softmax output layer producing probabilities for all 100 classes.
DA model that uses regression to predict continuous values instead of classes.
Attempts:
2 left
💡 Hint

Top-K accuracy requires ranking multiple class probabilities.

Hyperparameter
advanced
1:30remaining
Effect of Increasing K in Top-K Accuracy

If you increase K in Top-K accuracy from 1 to 10, what is the expected effect on the accuracy metric?

ATop-K accuracy will remain exactly the same regardless of K.
BTop-K accuracy will decrease because the model becomes less confident.
CTop-K accuracy will become meaningless and always zero.
DTop-K accuracy will generally increase or stay the same because more predictions are considered correct.
Attempts:
2 left
💡 Hint

Think about how including more guesses affects the chance of the true label being in the top K.

Metrics
expert
2:30remaining
Calculating Top-3 Accuracy from Model Outputs

Given the following model output logits and true labels, what is the Top-3 accuracy?

logits = [[2.0, 1.0, 0.1, 0.5], [0.1, 0.2, 3.0, 0.4], [1.0, 2.5, 0.3, 0.2]]
true_labels = [0, 2, 1]

Use softmax to convert logits to probabilities before selecting top predictions.

Computer Vision
import numpy as np

def softmax(x):
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()

def top_k_accuracy_from_logits(logits, labels, k):
    correct = 0
    for logit, label in zip(logits, labels):
        probs = softmax(logit)
        top_k = np.argsort(probs)[-k:][::-1]
        if label in top_k:
            correct += 1
    return correct / len(labels)

logits = [[2.0, 1.0, 0.1, 0.5], [0.1, 0.2, 3.0, 0.4], [1.0, 2.5, 0.3, 0.2]]
true_labels = [0, 2, 1]

result = top_k_accuracy_from_logits(logits, true_labels, 3)
print(round(result, 2))
A0.67
B1.0
C0.33
D0.0
Attempts:
2 left
💡 Hint

Apply softmax to logits, then check if true label is in top 3 probabilities.

Practice

(1/5)
1. What does Top-K accuracy measure in a classification model?
easy
A. If the true label is among the top K predicted labels
B. The accuracy of the model's single best prediction only
C. The time taken to make K predictions
D. The number of classes in the dataset

Solution

  1. Step 1: Understand the definition of Top-K accuracy

    Top-K accuracy checks if the correct label is within the top K guesses made by the model, not just the top 1.
  2. Step 2: Compare options with the definition

    Only If the true label is among the top K predicted labels correctly states that Top-K accuracy measures if the true label is in the top K predictions.
  3. Final Answer:

    If the true label is among the top K predicted labels -> Option A
  4. Quick Check:

    Top-K accuracy = True label in top K predictions [OK]
Hint: Top-K means checking top K guesses, not just one [OK]
Common Mistakes:
  • Confusing Top-K accuracy with single-label accuracy
  • Thinking it measures prediction speed
  • Assuming it counts total classes
2. Which of the following is the correct way to compute Top-3 accuracy using PyTorch's topk method on model outputs outputs and true labels labels?
easy
A. pred = outputs.max(3); correct = pred.eq(labels).sum().item()
B. correct = outputs.topk(3).eq(labels).sum().item()
C. _, pred = outputs.topk(3, dim=1); correct = pred.eq(labels.view(-1,1)).sum().item()
D. _, pred = outputs.topk(1, dim=0); correct = pred.eq(labels).sum().item()

Solution

  1. Step 1: Understand PyTorch topk usage

    The topk(k, dim=1) returns top k values and indices along dimension 1 (classes). We want indices for predictions.
  2. Step 2: Match predictions with labels

    Reshape labels to (-1,1) to compare with top-k predictions and count matches with eq and sum.
  3. Final Answer:

    _, pred = outputs.topk(3, dim=1); correct = pred.eq(labels.view(-1,1)).sum().item() -> Option C
  4. Quick Check:

    Use topk with dim=1 and compare with labels reshaped [OK]
Hint: Use topk(dim=1) and reshape labels for comparison [OK]
Common Mistakes:
  • Using max instead of topk for multiple predictions
  • Wrong dimension in topk call
  • Not reshaping labels for comparison
3. Given the following PyTorch code snippet, what is the printed Top-2 accuracy count?
import torch
outputs = torch.tensor([[0.1, 0.8, 0.05, 0.05],
                        [0.4, 0.3, 0.2, 0.1],
                        [0.25, 0.25, 0.25, 0.25]])
labels = torch.tensor([1, 2, 3])
_, pred = outputs.topk(2, dim=1)
correct = pred.eq(labels.view(-1,1)).sum().item()
print(correct)
medium
A. 2
B. 1
C. 3
D. 0

Solution

  1. Step 1: Identify top 2 predictions per sample

    For each row: - Row 1: top 2 indices are [1, 0] (0.8, 0.1) - Row 2: top 2 indices are [0, 1] (0.4, 0.3) - Row 3: top 2 indices are [0, 1] (both 0.25, tie broken by index)
  2. Step 2: Check if true label is in top 2 predictions

    Labels are [1, 2, 3]: - Sample 1: label 1 in [1,0] -> yes - Sample 2: label 2 in [0,1] -> no - Sample 3: label 3 in [0,1] -> no
  3. Final Answer:

    1 -> Option B
  4. Quick Check:

    Only one label in top 2 predictions [OK]
Hint: Check top K indices and compare with labels one by one [OK]
Common Mistakes:
  • Assuming all labels are in top 2
  • Ignoring tie-breaking in topk
  • Not reshaping labels for comparison
4. You wrote this code to compute Top-5 accuracy but it always returns zero. What is the bug?
_, pred = outputs.topk(5)
correct = pred.eq(labels).sum().item()
medium
A. Missing dimension argument in topk causes wrong axis selection
B. Labels should be converted to float before comparison
C. topk should be called with k=1 for Top-5 accuracy
D. Using sum().item() returns a tensor, not a number

Solution

  1. Step 1: Check topk usage without dimension

    Calling topk(5) without dim defaults to dim=0, which is incorrect for class predictions along dim=1.
  2. Step 2: Understand effect on predictions and comparison

    Wrong dimension means predicted indices do not align with labels, so pred.eq(labels) never matches, resulting in zero correct.
  3. Final Answer:

    Missing dimension argument in topk causes wrong axis selection -> Option A
  4. Quick Check:

    Always specify dim=1 for class predictions in topk [OK]
Hint: Always specify dim=1 in topk for class dimension [OK]
Common Mistakes:
  • Forgetting dim argument in topk
  • Converting labels unnecessarily
  • Misunderstanding sum().item() output
5. You have a model with 100 classes and want to report Top-1 and Top-5 accuracy on a test set. Which approach best handles the evaluation efficiently and correctly?
hard
A. Use topk(1, dim=1) for Top-5 accuracy and topk(5, dim=1) for Top-1 accuracy
B. Compute Top-1 accuracy by max(dim=0) and Top-5 by topk(5, dim=0) without reshaping labels
C. Calculate Top-5 accuracy by checking if label is in top 5 predictions using a for loop over each sample
D. Use topk(5, dim=1) on model outputs, compare with labels reshaped, then compute Top-1 by checking if label equals top prediction

Solution

  1. Step 1: Understand correct usage of topk for Top-K accuracy

    Top-5 accuracy requires topk(5, dim=1) to get top 5 class indices per sample. Labels must be reshaped to compare with these indices.
  2. Step 2: Compute Top-1 accuracy separately

    Top-1 accuracy is checking if label equals the top prediction (max or topk with k=1). This is done by comparing labels with top prediction indices.
  3. Final Answer:

    Use topk(5, dim=1) on model outputs, compare with labels reshaped, then compute Top-1 by checking if label equals top prediction -> Option D
  4. Quick Check:

    Top-K needs topk(dim=1) and label reshape; Top-1 is top prediction check [OK]
Hint: Top-K needs topk(dim=1) and label reshape; Top-1 is top prediction check [OK]
Common Mistakes:
  • Using wrong dimension in topk
  • Mixing up Top-1 and Top-5 calls
  • Not reshaping labels for comparison
  • Using loops instead of vectorized operations