Top-K accuracy measures if the correct answer is within the model's top K guesses. This is useful when many classes exist, like recognizing objects in pictures. It tells us if the model is close, even if not perfect. For example, if K=5, the model is right if the true label is in its 5 best guesses. This helps when exact match is hard but near misses still count.
Top-K accuracy in Computer Vision - Model Metrics & Evaluation
Start learning this pattern below
Jump into concepts and practice - no test required
True label: Cat
Model top-1 guess: Dog (wrong)
Model top-5 guesses: [Dog, Cat, Rabbit, Fox, Horse]
Top-1 accuracy: 0 (missed)
Top-5 accuracy: 1 (hit, because Cat is in top 5)
Confusion matrix is less useful here because Top-K checks multiple guesses.
Instead, we count how often true label is in top K predictions over all samples.
Top-K accuracy is about recall: how often the true label is found in the top K guesses. Increasing K raises recall but may lower precision because more guesses include wrong labels.
Example: In a photo app, showing top 3 guesses helps users find the right label even if top guess is wrong. But showing too many guesses (large K) can confuse users.
So, choose K to balance user ease (higher recall) and clarity (higher precision).
Good Top-1 accuracy means the model often guesses exactly right. For example, 80% Top-1 accuracy means 8 out of 10 times the first guess is correct.
Good Top-5 accuracy might be 95%, meaning the true label is almost always in the top 5 guesses.
Bad values are low numbers, like 30% Top-1 and 50% Top-5, showing the model struggles to find the right label even among many guesses.
- Relying only on Top-1 accuracy can hide near misses that are useful in practice.
- Choosing too large K inflates accuracy but may not help real users.
- Data leakage can make Top-K accuracy look better if test data is too similar to training.
- Overfitting can cause high Top-K accuracy on training but poor real-world results.
Your image classifier has 60% Top-1 accuracy but 90% Top-5 accuracy. Is this good?
Answer: It depends on your use case. If users can pick from top 5 guesses, 90% means the model is helpful. But 60% Top-1 means it often misses the first guess, so if exact match is needed, it may not be good enough.
Practice
Top-K accuracy measure in a classification model?Solution
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.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.Final Answer:
If the true label is among the top K predicted labels -> Option AQuick Check:
Top-K accuracy = True label in top K predictions [OK]
- Confusing Top-K accuracy with single-label accuracy
- Thinking it measures prediction speed
- Assuming it counts total classes
topk method on model outputs outputs and true labels labels?Solution
Step 1: Understand PyTorch topk usage
Thetopk(k, dim=1)returns top k values and indices along dimension 1 (classes). We want indices for predictions.Step 2: Match predictions with labels
Reshape labels to (-1,1) to compare with top-k predictions and count matches witheqandsum.Final Answer:
_, pred = outputs.topk(3, dim=1); correct = pred.eq(labels.view(-1,1)).sum().item() -> Option CQuick Check:
Use topk with dim=1 and compare with labels reshaped [OK]
- Using max instead of topk for multiple predictions
- Wrong dimension in topk call
- Not reshaping labels for comparison
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)Solution
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)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] -> noFinal Answer:
1 -> Option BQuick Check:
Only one label in top 2 predictions [OK]
- Assuming all labels are in top 2
- Ignoring tie-breaking in topk
- Not reshaping labels for comparison
_, pred = outputs.topk(5) correct = pred.eq(labels).sum().item()
Solution
Step 1: Check topk usage without dimension
Callingtopk(5)withoutdimdefaults to dim=0, which is incorrect for class predictions along dim=1.Step 2: Understand effect on predictions and comparison
Wrong dimension means predicted indices do not align with labels, sopred.eq(labels)never matches, resulting in zero correct.Final Answer:
Missing dimension argument in topk causes wrong axis selection -> Option AQuick Check:
Always specify dim=1 for class predictions in topk [OK]
- Forgetting dim argument in topk
- Converting labels unnecessarily
- Misunderstanding sum().item() output
Solution
Step 1: Understand correct usage of topk for Top-K accuracy
Top-5 accuracy requirestopk(5, dim=1)to get top 5 class indices per sample. Labels must be reshaped to compare with these indices.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.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 DQuick Check:
Top-K needs topk(dim=1) and label reshape; Top-1 is top prediction check [OK]
- Using wrong dimension in topk
- Mixing up Top-1 and Top-5 calls
- Not reshaping labels for comparison
- Using loops instead of vectorized operations
