What if you could teach a computer new tricks without making it relearn everything from zero?
Why Freezing layers in PyTorch? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you want to teach a computer to recognize cats in photos. You start from scratch, training every part of the computer's brain, even the parts that already know how to see simple shapes. This takes a lot of time and effort.
Training every part of the model again is slow and wastes energy. It's like relearning how to see basic shapes every time you want to learn something new. Mistakes happen easily, and it takes much longer to get good results.
Freezing layers means you tell the computer to keep some parts fixed because they already know useful things. This way, the computer focuses only on learning the new stuff, making training faster and more reliable.
for param in model.parameters(): param.requires_grad = True
for param in model.features.parameters(): param.requires_grad = False
Freezing layers lets you quickly adapt powerful models to new tasks without retraining everything, saving time and improving results.
When building a photo app that detects new objects, you can freeze the early layers that recognize edges and colors, and only train the last layers to spot the new objects.
Training all layers every time is slow and inefficient.
Freezing layers keeps learned knowledge fixed, speeding up training.
This technique helps adapt models to new tasks quickly and effectively.
Practice
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 CQuick Check:
Freezing = no weight updates [OK]
- Thinking freezing increases learning rate
- Believing freezing removes layers
- Assuming freezing duplicates layers
model?Solution
Step 1: Identify correct syntax to freeze parameters
Freezing requires settingrequires_grad = Falsefor each parameter.Step 2: Check each option
for param in model.parameters(): param.requires_grad = False correctly loops over parameters and setsrequires_grad = False. Others are invalid or incorrect.Final Answer:
for param in model.parameters(): param.requires_grad = False -> Option BQuick Check:
Set requires_grad False to freeze [OK]
- Using model.requires_grad instead of param.requires_grad
- Calling a non-existent freeze() method
- Setting param.grad to None does not freeze
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?
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 AQuick Check:
Frozen layer params excluded, trainable = 2 [OK]
- Counting all parameters ignoring requires_grad
- Assuming ReLU has parameters
- Confusing layer indices
for param in model.layer1.parameters():
param.grad = FalseWhat is the problem with this code?
Solution
Step 1: Understand difference between param.grad and param.requires_grad
param.gradholds gradient values, it is a tensor or None, not a flag to enable/disable gradients.Step 2: Correct way to freeze parameters
To freeze, setparam.requires_grad = False. Settingparam.grad = Falseis invalid and does not freeze.Final Answer:
param.requires_grad should be set, not param.grad -> Option DQuick Check:
Freeze by requires_grad=False, not param.grad [OK]
- Confusing param.grad with requires_grad
- Trying to disable gradients by setting param.grad
- Assuming param.grad is a boolean
layer1, layer2, and layer3. You want to freeze layer1 and layer2 but train layer3. Which code correctly freezes only the first two layers?Solution
Step 1: Understand freezing multiple layers
Freezing means settingrequires_grad = Falseon 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 overlayer1andlayer2parameters 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 AQuick Check:
Freeze layers by setting requires_grad False per parameter [OK]
- Setting requires_grad on layer objects instead of parameters
- Using non-existent freeze_layers method
- Freezing all parameters
