You are right, I am using the backward operation implicitly when I use:
F_pred = -grad(E_pred, Ri, create_graph=True)[0].requires_grad_(True)

I guess my question is how to clear the gradient information after I have invoked this call?
(So basically I need the autograd to compute a derivative through my network at each iteration in the validation/testing step, but I do not want to actually update/change my network parameters, and after each iteration I wish to ensure that I have discarded all the gradient information that the network might have built up.)
Does that make sense?