torch.nn.Module [4]

J·2021년 6월 8일
1

pytorch

목록 보기
7/23

register_forward_hook(hook)

공식 설명은 아래와 같다.

Registers a forward hook on the module.
The hook will be called every time after forward() has computed an output. It should have the following signature:
hook(module, input, output) -> None or modified output

모듈에 forward hook을 등록한다. 이 hook은 forward가 output을 계산할 때 마다 호출된다.
module의 positional arguments만이 hook에서의 input으로 사용된다. hook은 output 뿐만 아니라 input도 변경할 수 있는데 forward가 호출된 후에 호출되기 때문에 forward 연산에는 영향을 미치지 않는다.

register_forward_pre_hook(hook)

공식설명은 아래와 같다.

Registers a forward pre-hook on the module.
The hook will be called every time before forward() is invoked. It should have the following signature:
hook(module, input) -> None or modified input

모듈에 forward pre hook을 등록한다. 이 hook은 forward가 발생하기전에 호출된다.
module에 주어진 positional argument만이 hook에서 사용되고, keyword argument는 사용되지 않는다. hook은 input을 변경한다. 변경한 값을 tuple 또는 single value로 반환할 수 있는데 single value가 반환될 경우 register_forward_pre_hook이 tuple로 wrap해준다.

register_full_backward_hook(hook)

공식설명은 아래와 같다.

Registers a backward hook on the module.
The hook will be called every time the gradients with respect to module inputs are computed. The hook should have the following signature:
hook(module, grad_input, grad_output) -> tuple(Tensor) or None 

Backward hook을 module에 등록한다. 모듈의 input에 대한 gradient가 계산될 때마다 해당 hook이 호출된다.
grad_input과 grad_output은 input과 output에 대한 gradient를 포함하는 tuple 이다. 이 hook은 자신에 대한 argument를 변경할 수 없지만, grad_input 대신에 사용될 input에 대한 새로운 gradient argument를 선택적으로 반환할 수 있다. grad_input은 positional argument로 주어진 input과만 대응되고, 나머지 keyword arguments는 무시한다. grad_input과 grad_output의 non-Tensor argument는 None이 된다.

Reference

  1. https://pytorch.org/docs/stable/generated/torch.nn.Module.html
profile
I'm interested in processing video&images with deeplearning and solving problem in our lives.

0개의 댓글