Bird
Raised Fist0
Computer Visionml~10 mins

Top-K accuracy in Computer Vision - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the function that calculates top-k accuracy from PyTorch.

Computer Vision
from torchmetrics import [1]
Drag options to blanks, or click blank then click option'
AAccuracy
BRecall
CPrecision
DTopKAccuracy
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing TopKAccuracy (does not exist)
Using Precision or Recall which are different metrics
2fill in blank
medium

Complete the code to create an Accuracy metric object for top 3 accuracy.

Computer Vision
top3_acc = Accuracy(task="multiclass", top_k=[1])
Drag options to blanks, or click blank then click option'
A1
B3
C5
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Using k=1 which is normal accuracy
Using k=5 or 10 which are valid but not for top 3 accuracy
3fill in blank
hard

Fix the error in the code to compute top-5 accuracy from model outputs and labels.

Computer Vision
top5_acc = Accuracy(task="multiclass", top_k=[1])
outputs = torch.randn(8, 1000)  # batch of 8, 1000 classes
labels = torch.randint(0, 1000, (8,))
accuracy = top5_acc(outputs, labels)
Drag options to blanks, or click blank then click option'
A10
B3
C1
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using k=1 or k=3 which do not compute top-5 accuracy
Passing wrong shapes for outputs or labels
4fill in blank
hard

Fill both blanks to create a dictionary of top-1 and top-3 accuracy metrics.

Computer Vision
metrics = {
    'top1': Accuracy(task="multiclass", top_k=[1]),
    'top3': Accuracy(task="multiclass", top_k=[2])
}
Drag options to blanks, or click blank then click option'
A1
B2
C3
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing top-1 with top-3 values
Using k=2 which is not standard for top-k accuracy
5fill in blank
hard

Fill all three blanks to compute and print top-1, top-3, and top-5 accuracy from outputs and labels.

Computer Vision
outputs = torch.randn(16, 1000)
labels = torch.randint(0, 1000, (16,))
metrics = {
    'top1': Accuracy(task="multiclass", top_k=[1]),
    'top3': Accuracy(task="multiclass", top_k=[2]),
    'top5': Accuracy(task="multiclass", top_k=[3])
}
for name, metric in metrics.items():
    acc = metric(outputs, labels)
    print(f"{name} accuracy: {acc.item():.4f}")
Drag options to blanks, or click blank then click option'
A1
B3
C5
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up k values for different top-k metrics
Using invalid k values like 10 for top1 or top3

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