Bird
Raised Fist0
PyTorchml~5 mins

Optimizers (SGD, Adam) in PyTorch - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main role of an optimizer in training a neural network?
An optimizer updates the model's weights to reduce the difference between predictions and true values, helping the model learn from data.
Click to reveal answer
beginner
What does SGD stand for and how does it update weights?
SGD stands for Stochastic Gradient Descent. It updates weights by moving them a small step opposite to the gradient of the loss, using a fixed learning rate.
Click to reveal answer
intermediate
How does Adam optimizer differ from SGD?
Adam combines ideas from momentum and adaptive learning rates. It adjusts learning rates for each weight individually using estimates of first and second moments of gradients.
Click to reveal answer
intermediate
What are the key hyperparameters of Adam optimizer?
The key hyperparameters are learning rate, beta1 (momentum decay), beta2 (RMS decay), and epsilon (small number to avoid division by zero).
Click to reveal answer
intermediate
Why might you choose Adam over SGD for training a model?
Adam often converges faster and requires less tuning of learning rate because it adapts learning rates per parameter and uses momentum, making it good for complex or noisy problems.
Click to reveal answer
What does SGD use to update model weights?
AGradient of loss and fixed learning rate
BRandom weight changes
CSecond moment estimates
DAdaptive learning rates per weight
Which optimizer adapts learning rates for each parameter individually?
ASGD
BGradient Descent
CAdam
DRMSProp
What is the purpose of the beta1 parameter in Adam optimizer?
AControls learning rate
BControls momentum decay
CPrevents division by zero
DControls batch size
Which optimizer is generally better for noisy or complex problems?
ANone
BSGD
CVanilla Gradient Descent
DAdam
What does the epsilon parameter in Adam do?
AAvoids division by zero
BControls momentum
CSets learning rate
DAdjusts batch size
Explain how SGD updates model weights during training.
Think about moving weights opposite to the slope of the loss.
You got /3 concepts.
    Describe the advantages of using Adam optimizer compared to SGD.
    Consider how Adam adjusts learning rates and remembers past gradients.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which optimizer in PyTorch adapts the learning rate for each parameter automatically?
      easy
      A. Adam
      B. SGD
      C. RMSprop
      D. Adagrad

      Solution

      1. Step 1: Understand optimizer behavior

        Adam optimizer adjusts learning rates for each parameter based on past gradients.
      2. Step 2: Compare with SGD

        SGD uses a fixed learning rate for all parameters without adaptation.
      3. Final Answer:

        Adam -> Option A
      4. Quick Check:

        Adaptive learning rate = Adam [OK]
      Hint: Adam adapts learning rates per parameter automatically [OK]
      Common Mistakes:
      • Confusing SGD as adaptive optimizer
      • Thinking RMSprop is the only adaptive optimizer
      • Assuming Adagrad is default in PyTorch
      2. Which of the following is the correct way to create an SGD optimizer in PyTorch with learning rate 0.01?
      easy
      A. optimizer = torch.optim.SGD(model, lr=0.01)
      B. optimizer = torch.SGD(model.parameters(), learning_rate=0.01)
      C. optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
      D. optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

      Solution

      1. Step 1: Check PyTorch optimizer syntax

        Correct syntax uses torch.optim.SGD with model.parameters() and lr argument.
      2. Step 2: Identify errors in other options

        The option with torch.SGD(model.parameters(), learning_rate=0.01) uses wrong module and argument name; the option with Adam uses wrong optimizer; the option passing model instead of parameters is incorrect.
      3. Final Answer:

        optimizer = torch.optim.SGD(model.parameters(), lr=0.01) -> Option D
      4. Quick Check:

        Correct syntax = optimizer = torch.optim.SGD(model.parameters(), lr=0.01) [OK]
      Hint: Use torch.optim.SGD with model.parameters() and lr= value [OK]
      Common Mistakes:
      • Passing model instead of model.parameters()
      • Using wrong argument name like learning_rate
      • Confusing Adam with SGD
      3. What will be the output loss value after one step of training with this code snippet?
      import torch
      import torch.nn as nn
      model = nn.Linear(2, 1)
      optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
      criterion = nn.MSELoss()
      
      inputs = torch.tensor([[1.0, 2.0]])
      target = torch.tensor([[1.0]])
      
      optimizer.zero_grad()
      output = model(inputs)
      loss = criterion(output, target)
      loss.backward()
      optimizer.step()
      
      print(round(loss.item(), 3))
      medium
      A. 0.5
      B. 0.25
      C. Cannot determine exact value
      D. 0.75

      Solution

      1. Step 1: Understand loss calculation

        Loss depends on random initial weights of model, so exact value varies each run.
      2. Step 2: Check code behavior

        Since weights are random, output and loss are not fixed; cannot predict exact loss value.
      3. Final Answer:

        Cannot determine exact value -> Option C
      4. Quick Check:

        Random init means loss unknown [OK]
      Hint: Random weights mean loss value varies; exact output unknown [OK]
      Common Mistakes:
      • Assuming fixed loss value without checking randomness
      • Ignoring model initialization effect
      • Confusing loss before and after optimizer step
      4. Identify the error in this PyTorch optimizer setup code:
      optimizer = torch.optim.Adam(model.parameters, lr=0.001)
      medium
      A. Adam optimizer does not accept learning rate argument
      B. model.parameters should be called as model.parameters()
      C. optimizer should be torch.SGD not Adam
      D. lr value should be an integer, not float

      Solution

      1. Step 1: Check method usage

        model.parameters is a method and must be called with parentheses to get parameters.
      2. Step 2: Validate other options

        Adam accepts lr argument; SGD is not mandatory; lr can be float.
      3. Final Answer:

        model.parameters should be called as model.parameters() -> Option B
      4. Quick Check:

        Call parameters() method correctly [OK]
      Hint: Always call model.parameters() with parentheses [OK]
      Common Mistakes:
      • Forgetting parentheses on model.parameters
      • Thinking Adam can't take lr argument
      • Assuming lr must be integer
      5. You want to train a model that converges quickly on noisy data. Which optimizer and learning rate combination is generally best to start with?
      hard
      A. Adam with lr=0.001
      B. SGD with lr=0.1
      C. SGD with lr=0.0001
      D. Adam with lr=0.1

      Solution

      1. Step 1: Consider optimizer suitability for noisy data

        Adam adapts learning rates and handles noisy gradients better than SGD.
      2. Step 2: Choose appropriate learning rate

        Typical starting lr for Adam is 0.001; too high (0.1) can cause instability.
      3. Final Answer:

        Adam with lr=0.001 -> Option A
      4. Quick Check:

        Adaptive optimizer + moderate lr = Adam 0.001 [OK]
      Hint: Use Adam with 0.001 lr for noisy data to converge fast [OK]
      Common Mistakes:
      • Using too high learning rate with Adam
      • Choosing SGD for noisy data without adaptation
      • Confusing learning rate scales
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard