For the weights, we set  requires_grad  after the initialization, since we don’t want that step included in the gradient. (Note that a trailing _  in PyTorch signifies that the operation is performed in-place.)
I found this in the following link : Pytorch nn tutorial 3
But why is requires_grad not set in the initialisation of weights, unlike biases?