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
Recall & Review
beginner
What does it mean to 'freeze layers' in a neural network?
Freezing layers means stopping their weights from changing during training. This keeps the learned features fixed while training other parts of the model.
Click to reveal answer
beginner
Why do we freeze layers when using a pre-trained model?
We freeze layers to keep the useful features learned from large data. This saves time and avoids losing good knowledge while training on new data.
Click to reveal answer
beginner
How do you freeze layers in PyTorch?
Set the layer's parameters' requires_grad attribute to False. For example: for param in model.layer.parameters(): param.requires_grad = False
Click to reveal answer
intermediate
What happens if you forget to freeze layers when fine-tuning?
The pre-trained weights may change too much, losing useful features. This can cause slower training or worse results.
Click to reveal answer
intermediate
Can you unfreeze layers after freezing them? Why would you do this?
Yes, you can set requires_grad back to True. This is useful to fine-tune the whole model after training only some layers first.
Click to reveal answer
What does setting param.requires_grad = False do in PyTorch?
APrevents the parameter from updating during training
BDeletes the parameter from the model
CInitializes the parameter with zeros
DMakes the parameter trainable
✗ Incorrect
Setting requires_grad to False tells PyTorch not to compute gradients for that parameter, so it won't update during training.
Why freeze layers in transfer learning?
ATo remove layers from the model
BTo keep learned features and reduce training time
CTo make the model slower
DTo increase the model size
✗ Incorrect
Freezing layers keeps the useful features learned before and speeds up training on new tasks.
Which layers are usually frozen first in a convolutional neural network?
AAll layers are frozen equally
BLast layers near the output
CRandom layers
DEarly layers near the input
✗ Incorrect
Early layers learn basic features like edges and textures, so they are often frozen to keep these general features.
What is a common next step after freezing layers and training the new layers?
AUnfreeze some layers and fine-tune the whole model
BDelete the frozen layers
CStop training immediately
DFreeze more layers
✗ Incorrect
After training new layers, unfreezing some layers allows fine-tuning the whole model for better accuracy.
If you freeze all layers in a model, what will happen during training?
AThe model will learn faster
BOnly biases will update
CNo weights will update, so the model won't learn
DThe model will randomly change weights
✗ Incorrect
Freezing all layers means no parameters update, so the model cannot learn from new data.
Explain in your own words what freezing layers means and why it is useful in transfer learning.
Think about how you keep some parts fixed while changing others.
You got /4 concepts.
Describe how you would freeze and then unfreeze layers in a PyTorch model during training.
Focus on the requires_grad attribute and training steps.
You got /4 concepts.
Practice
(1/5)
1. What does freezing layers in a PyTorch model do during training?
easy
A. Removes the layers from the model
B. Increases the learning rate for those layers
C. Stops the layers' weights from updating
D. Duplicates the layers for faster training
Solution
Step 1: Understand freezing layers meaning
Freezing layers means preventing their weights from changing during training.
Step 2: Effect on training
When frozen, layers do not update weights, so they keep learned features intact.
Final Answer:
Stops the layers' weights from updating -> Option C
Quick Check:
Freezing = no weight updates [OK]
Hint: Freezing means no weight changes during training [OK]
Common Mistakes:
Thinking freezing increases learning rate
Believing freezing removes layers
Assuming freezing duplicates layers
2. Which of the following is the correct way to freeze all parameters in a PyTorch model named model?
easy
A. model.freeze()
B. for param in model.parameters(): param.requires_grad = False
C. model.requires_grad = False
D. for param in model.parameters(): param.grad = None
Solution
Step 1: Identify correct syntax to freeze parameters
Freezing requires setting requires_grad = False for each parameter.
Step 2: Check each option
for param in model.parameters(): param.requires_grad = False correctly loops over parameters and sets requires_grad = False. Others are invalid or incorrect.
Final Answer:
for param in model.parameters(): param.requires_grad = False -> Option B
Quick Check:
Set requires_grad False to freeze [OK]
Hint: Set requires_grad=False on each parameter to freeze [OK]
Common Mistakes:
Using model.requires_grad instead of param.requires_grad
Calling a non-existent freeze() method
Setting param.grad to None does not freeze
3. Consider this PyTorch code snippet:
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 5),
nn.ReLU(),
nn.Linear(5, 2)
)
for param in model[0].parameters():
param.requires_grad = False
trainable_params = [p for p in model.parameters() if p.requires_grad]
print(len(trainable_params))
What will be printed?
medium
A. 2
B. 4
C. 6
D. 0
Solution
Step 1: Analyze model layers and parameters
model[0] is Linear(10,5) with 2 parameters (weight and bias). model[2] is Linear(5,2) with 2 parameters.
Step 2: Check which parameters are trainable
Parameters in model[0] are frozen (requires_grad=False), so only model[2]'s 2 parameters remain trainable.
Final Answer:
2 -> Option A
Quick Check:
Frozen layer params excluded, trainable = 2 [OK]
Hint: Count only parameters with requires_grad=True [OK]
Common Mistakes:
Counting all parameters ignoring requires_grad
Assuming ReLU has parameters
Confusing layer indices
4. You want to freeze the first layer of a PyTorch model but accidentally wrote:
for param in model.layer1.parameters():
param.grad = False
What is the problem with this code?
medium
A. param.grad is a tensor, not a boolean flag
B. param.grad disables gradients correctly
C. model.layer1.parameters() does not exist
D. param.requires_grad should be set, not param.grad
Solution
Step 1: Understand difference between param.grad and param.requires_grad
param.grad holds gradient values, it is a tensor or None, not a flag to enable/disable gradients.
Step 2: Correct way to freeze parameters
To freeze, set param.requires_grad = False. Setting param.grad = False is invalid and does not freeze.
Final Answer:
param.requires_grad should be set, not param.grad -> Option D
Quick Check:
Freeze by requires_grad=False, not param.grad [OK]
Hint: Freeze with requires_grad, not param.grad [OK]
Common Mistakes:
Confusing param.grad with requires_grad
Trying to disable gradients by setting param.grad
Assuming param.grad is a boolean
5. You have a pretrained PyTorch model with 3 layers: layer1, layer2, and layer3. You want to freeze layer1 and layer2 but train layer3. Which code correctly freezes only the first two layers?
hard
A. for layer in [model.layer1, model.layer2]:
for param in layer.parameters():
param.requires_grad = False
B. for param in model.parameters():
param.requires_grad = False
for param in model.layer3.parameters():
param.requires_grad = False
C. model.layer1.requires_grad = False
model.layer2.requires_grad = False
D. model.freeze_layers(['layer1', 'layer2'])
Solution
Step 1: Understand freezing multiple layers
Freezing means setting requires_grad = False on each parameter in the layers to freeze.
Step 2: Evaluate options
for layer in [model.layer1, model.layer2]:
for param in layer.parameters():
param.requires_grad = False correctly loops over layer1 and layer2 parameters and freezes them correctly. for param in model.parameters():
param.requires_grad = False
for param in model.layer3.parameters():
param.requires_grad = False incorrectly freezes all parameters including layer3. model.layer1.requires_grad = False
model.layer2.requires_grad = False tries to set requires_grad on layers (invalid). model.freeze_layers(['layer1', 'layer2']) calls a non-existent method.
Final Answer:
for layer in [model.layer1, model.layer2]:
for param in layer.parameters():
param.requires_grad = False -> Option A
Quick Check:
Freeze layers by setting requires_grad False per parameter [OK]
Hint: Freeze layers by looping params and setting requires_grad False [OK]
Common Mistakes:
Setting requires_grad on layer objects instead of parameters