Assuming output is 1000 classes without removing fc
Confusing batch size with feature dimension
Expecting 2048 features from ResNet18 (it's 512)
4. Identify the error in this feature extraction code snippet and select the fix:
model = models.resnet50(pretrained=True)
for param in model.parameters():
param.requires_grad = False
model.fc = nn.Linear(2048, 5)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# Training loop here
medium
A. No error; code is correct
B. Set requires_grad=True for model.fc parameters after replacement
C. Use Adam optimizer instead of SGD
D. Remove freezing of parameters to train all layers
Solution
Step 1: Check freezing timing
The loop freezes existing parameters before replacing model.fc, so the new fc layer's parameters are created with requires_grad=True by default.
Step 2: Verify optimizer behavior
Optimizer only updates parameters where requires_grad=True, which are the new fc parameters; backbone remains frozen.
Final Answer:
No error; code is correct -> Option A
Quick Check:
New layer params unfrozen by default [OK]
Hint: New layers have requires_grad=True by default [OK]
Common Mistakes:
Assuming freezing all parameters includes new layers
Changing optimizer without fixing requires_grad
Removing freezing unnecessarily
5. You want to use a pre-trained ResNet34 to classify 3 classes in your dataset. You freeze all layers except the last one. However, your training accuracy stays very low. What is the best next step to improve feature extraction performance?
hard
A. Reduce batch size to 1 to improve gradient estimates
B. Increase learning rate to 1.0 for faster training
C. Replace the optimizer with SGD without momentum
D. Unfreeze some deeper layers to fine-tune features for your task
Solution
Step 1: Understand freezing impact
Freezing all but last layer may limit model's ability to adapt features to new classes, causing low accuracy.
Step 2: Fine-tune some deeper layers
Unfreezing some layers closer to output allows the model to adjust features better for your specific dataset.
Final Answer:
Unfreeze some deeper layers to fine-tune features for your task -> Option D
Quick Check:
Fine-tune layers = better adaptation [OK]
Hint: Fine-tune layers if frozen model underperforms [OK]
Common Mistakes:
Increasing learning rate too much causes instability
Changing optimizer without addressing feature adaptation