You are right, it was a typo!
This hook thing works really interesting! but it is not completely clear how it works really yet for me…
what does each of this functions do here? I mean i read the register_forward_hook explanation and got it, but what   this does:
def hook(module, input, output):
    setattr(module, "_value_hook", output)

is _value_hook one of the attributes of the hook function?
Also another question:
Now that i got the in_output results, i am doing some other stuff on it and use it in computing my loss, will back propagation still works as before or i should do something extra?