What’s the difference between register_hook(), and register_backward_hook()? Do they do the same thing? How do I save these gradients to a list? Do I need to remove the hook on each iteration of the training loop?