Bird
Raised Fist0
PyTorchml~5 mins

Gradient access (.grad) in PyTorch - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the .grad attribute in PyTorch represent?
The .grad attribute holds the gradient of a tensor after backpropagation. It shows how much the tensor affects the final output.
Click to reveal answer
beginner
When is the .grad attribute populated in PyTorch?
The .grad attribute is filled after calling backward() on a tensor that is part of a computation graph with requires_grad=True.
Click to reveal answer
beginner
How do you enable gradient tracking for a tensor in PyTorch?
Set requires_grad=True when creating the tensor, for example: torch.tensor([1.0, 2.0], requires_grad=True).
Click to reveal answer
beginner
What happens if you try to access .grad before calling backward()?
The .grad attribute will be None because gradients have not been computed yet.
Click to reveal answer
intermediate
How can you clear gradients stored in .grad before the next backward pass?
Use optimizer.zero_grad() or manually set tensor.grad.zero_() to reset gradients to zero.
Click to reveal answer
What must be set to True for a tensor to track gradients in PyTorch?
Arequires_grad
Btrack_grad
Cgrad_enabled
Denable_grad
When is the .grad attribute of a tensor updated?
AAfter calling <code>backward()</code>
BWhen the tensor is created
CAfter calling <code>forward()</code>
DWhen printing the tensor
What is the value of .grad before any backward pass?
ASame as the tensor
BZero tensor
CRandom values
DNone
How do you reset gradients in PyTorch before a new training step?
ASet <code>requires_grad=False</code>
BCall <code>optimizer.zero_grad()</code>
CCall <code>tensor.backward()</code>
DDelete the tensor
Which of these tensors will have a .grad attribute after backward?
ATensor with <code>requires_grad=False</code>
BTensor created with <code>torch.no_grad()</code>
CTensor with <code>requires_grad=True</code>
DTensor converted to numpy
Explain how to access and use the .grad attribute in PyTorch during training.
Think about the steps in a training loop involving gradients.
You got /4 concepts.
    Describe what happens if you forget to reset gradients before the next backward pass in PyTorch.
    Consider how gradients behave across multiple backward calls.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the .grad attribute of a PyTorch tensor represent?
      easy
      A. The shape of the tensor
      B. The value of the tensor itself
      C. The gradient of the tensor after backpropagation
      D. The data type of the tensor

      Solution

      1. Step 1: Understand the role of .grad in PyTorch

        The .grad attribute stores the gradient of the tensor computed during backpropagation.
      2. Step 2: Differentiate from other tensor properties

        The tensor's value, shape, and data type are stored in other attributes, not .grad.
      3. Final Answer:

        The gradient of the tensor after backpropagation -> Option C
      4. Quick Check:

        .grad = gradient after backward() [OK]
      Hint: Remember: .grad holds gradients after backward() [OK]
      Common Mistakes:
      • Confusing .grad with the tensor's value
      • Expecting .grad before calling backward()
      • Mixing .grad with tensor shape or dtype
      2. Which of the following code snippets correctly accesses the gradient of a tensor x after backpropagation?
      easy
      A. grad = x.grad
      B. grad = x.gradient()
      C. grad = x.get_grad()
      D. grad = x.gradient

      Solution

      1. Step 1: Recall the correct attribute for gradients

        PyTorch stores gradients in the .grad attribute, accessed as x.grad.
      2. Step 2: Identify incorrect syntax

        Methods like gradient() or get_grad() do not exist for tensors.
      3. Final Answer:

        grad = x.grad -> Option A
      4. Quick Check:

        Use .grad attribute, not methods [OK]
      Hint: Use .grad attribute, not functions [OK]
      Common Mistakes:
      • Trying to call .grad as a function
      • Using incorrect method names
      • Accessing .gradient instead of .grad
      3. Consider the following PyTorch code:
      import torch
      x = torch.tensor(2.0, requires_grad=True)
      y = x ** 3
      z = y + 4
      z.backward()
      print(x.grad)

      What will be the output of print(x.grad)?
      medium
      A. None
      B. tensor(12.)
      C. tensor(6.)
      D. tensor(8.)

      Solution

      1. Step 1: Compute the derivative of z with respect to x

        Given y = x^3 and z = y + 4, the derivative is dz/dx = dy/dx = 3x^2.
      2. Step 2: Calculate the gradient at x=2.0

        Plugging in x=2, 3 * (2)^2 = 3 * 4 = 12. So, x.grad will be tensor(12.).
      3. Final Answer:

        tensor(12.) -> Option B
      4. Quick Check:

        Derivative 3x^2 at x=2 = 12 [OK]
      Hint: Calculate derivative manually, then plug in x [OK]
      Common Mistakes:
      • Forgetting to call backward() before accessing .grad
      • Calculating derivative incorrectly
      • Confusing y and z derivatives
      4. You run this code:
      import torch
      x = torch.tensor(3.0, requires_grad=True)
      y = x ** 2
      print(x.grad)

      But the output is None. Why?
      medium
      A. You forgot to call y.backward() to compute gradients
      B. The tensor x does not require gradients
      C. You cannot access gradients of scalar tensors
      D. The tensor x is not a float

      Solution

      1. Step 1: Check if backward() was called

        Gradients are computed only after calling backward() on the output tensor.
      2. Step 2: Confirm requires_grad=True and missing backward()

        Since x has requires_grad=True, the missing step is calling y.backward().
      3. Final Answer:

        You forgot to call y.backward() to compute gradients -> Option A
      4. Quick Check:

        Call backward() before accessing .grad [OK]
      Hint: Always call backward() before checking .grad [OK]
      Common Mistakes:
      • Expecting .grad before backward()
      • Confusing requires_grad flag
      • Thinking .grad auto-updates without backward()
      5. Given this code:
      import torch
      x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
      y = (x ** 2).sum()
      y.backward()
      print(x.grad)

      What will be the output of print(x.grad)?
      hard
      A. None
      B. tensor([1., 2., 3.])
      C. tensor([1., 4., 9.])
      D. tensor([2., 4., 6.])

      Solution

      1. Step 1: Understand the function and gradient

        The function is y = sum(x_i^2). The gradient of y with respect to x_i is dy/dx_i = 2x_i.
      2. Step 2: Calculate gradients for each element

        For x = [1, 2, 3], gradients are [2*1, 2*2, 2*3] = [2, 4, 6].
      3. Final Answer:

        tensor([2., 4., 6.]) -> Option D
      4. Quick Check:

        Gradient of x^2 is 2x element-wise [OK]
      Hint: Gradient of x² is 2x for each element [OK]
      Common Mistakes:
      • Confusing sum of squares with squares of sums
      • Forgetting element-wise gradient
      • Expecting None without backward()
      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