Hi!
I am following a tutorial on https://pytorch.org/docs/stable/notes/extending.html#extending-torch-autograd 40.
Feeling very confused understanding ctx.needs_input_grad.
Example:
class FC(torch.nn.Module):
    def __init__(self):
        super(FC, self).__init__()
        self.fc1 = Linear(3,64,bias=True)
        self.fc2 = Linear(64,64,bias=True)
    
    def forward(self, x):        
        x = self.fc1(x)
        x = self.fc2(x)
        return x

Output:
ctx.needs_input_grad (True, True, True)
ctx.needs_input_grad (False, True, True)

Which is correct because first True is wx+b w.r.t. x and it takes part in a chain rule. It is reflected in the graph but is not reflected in model.parameters().
How PyTorch figures variable that takes part in a chain? Is it the first position?
I am taking the courage of calling @albanD
Thank you very much for your attention!
Andrei