Bird
Raised Fist0
PyTorchml~5 mins

Freezing layers in PyTorch - Cheat Sheet & Quick Revision

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
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
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
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
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
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
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

      1. Step 1: Understand freezing layers meaning

        Freezing layers means preventing their weights from changing during training.
      2. Step 2: Effect on training

        When frozen, layers do not update weights, so they keep learned features intact.
      3. Final Answer:

        Stops the layers' weights from updating -> Option C
      4. 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

      1. Step 1: Identify correct syntax to freeze parameters

        Freezing requires setting requires_grad = False for each parameter.
      2. 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.
      3. Final Answer:

        for param in model.parameters(): param.requires_grad = False -> Option B
      4. 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

      1. 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.
      2. 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.
      3. Final Answer:

        2 -> Option A
      4. 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

      1. 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.
      2. Step 2: Correct way to freeze parameters

        To freeze, set param.requires_grad = False. Setting param.grad = False is invalid and does not freeze.
      3. Final Answer:

        param.requires_grad should be set, not param.grad -> Option D
      4. 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

      1. Step 1: Understand freezing multiple layers

        Freezing means setting requires_grad = False on each parameter in the layers to freeze.
      2. 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.
      3. Final Answer:

        for layer in [model.layer1, model.layer2]: for param in layer.parameters(): param.requires_grad = False -> Option A
      4. 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
      • Using non-existent freeze_layers method
      • Freezing all parameters