Difference between eval(), torch.no_grad() and with torch.set_grad_enabled()