4. Identify the error in this PyTorch code that prevents training:
import torch
x = torch.tensor([1.0, 2.0, 3.0])
y = x.sum()
y.backward()
print(x.grad)
medium
A. x does not have requires_grad=True, so gradients are not tracked.
B. Using sum() prevents gradient calculation.
C. backward() must be called on x, not y.
D. x.grad should be printed before backward() call.
Solution
Step 1: Check if gradients are tracked
By default, tensors have requires_grad=False, so no gradients are stored.
Step 2: Identify why backward() fails to compute gradients
Since x lacks requires_grad=True, x.grad remains None after backward.
Final Answer:
x does not have requires_grad=True, so gradients are not tracked. -> Option A
Quick Check:
requires_grad=True needed for gradients [OK]
Hint: Set requires_grad=True to track gradients [OK]
Common Mistakes:
Assuming sum() disables gradients
Calling backward() on wrong tensor
Printing grad before backward()
5. You want to train a model with parameters w and b using PyTorch. Which sequence correctly uses automatic differentiation to update parameters after computing loss?
hard
A. loss.backward()
with torch.no_grad():
w -= learning_rate * w.grad
b -= learning_rate * b.grad
w.grad.zero_()
b.grad.zero_()
B. loss.backward()
w = w - learning_rate * w.grad
b = b - learning_rate * b.grad
w.grad.zero_()
b.grad.zero_()
C. loss.backward()
w.grad = None
b.grad = None
w -= learning_rate * w.grad
b -= learning_rate * b.grad
D. loss.backward()
w.grad.zero_()
b.grad.zero_()
w -= learning_rate * w.grad
b -= learning_rate * b.grad
Solution
Step 1: Understand gradient update with no_grad()
Parameter updates must be done without tracking gradients, so use torch.no_grad() context.
Step 2: Zero gradients after update
After updating, gradients must be reset with grad.zero_() to avoid accumulation.
Final Answer:
Use loss.backward(), update inside torch.no_grad(), then zero gradients. -> Option A
Quick Check:
Update params inside no_grad, then zero grads [OK]
Hint: Update params inside no_grad, then zero grads [OK]
Common Mistakes:
Updating params outside no_grad() causes errors
Not zeroing gradients after update
Setting grad to None instead of zero_()
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.