torch.nn.Module [2]

J·2021년 6월 5일
0

pytorch

목록 보기
5/23

1D1T(1 Day 1 Torch) 2일차

이전에 torch.nn.Module에 대한 포스팅을 썼는데 더 자세히 알아보도록하겠다. 아마 3,4,5도 계속 포스팅 할 듯하다.

torch.nn.Module.add_module(name, module)

공식 설명은 아래와 같다.

  Adds a child module to the current module.

  The module can be accessed as an attribute using the given name.

현재의 모듈에 child module을 추가한다. 추가한 모듈은 주어진 이름을 이용하여 접근할 수 있다.

torch.nn.Module.apply(fn)

공식설명은 아래와 같다.

  Applies fn recursively to every submodule (as returned by .children()) as well as self. Typical use includes initializing the parameters of a model (see also torch.nn.init).

fn을 .children() method를 통해 반환되는 모든 submodule에 적용한다. fn은 모든 submodule에 적용되는 함수이다.

Example

>>> @torch.no_grad()
>>> def init_weights(m):
>>>     print(m)
>>>     if type(m) == nn.Linear:
>>>         m.weight.fill_(1.0)
>>>         print(m.weight)
>>> net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 2))
>>> net.apply(init_weights)

torch.nn.Module.register_buffer(name, tensor, persistent=True)

공식설명은 아래와 같다.

  Adds a buffer to the module.

  This is typically used to register a buffer that should not to be considered a model parameter. For example, BatchNorm’s running_mean is not a parameter, but is part of the module’s state. Buffers, by default, are persistent and will be saved alongside parameters. This behavior can be changed by setting persistent to False. The only difference between a persistent buffer and a non-persistent buffer is that the latter will not be a part of this module’s state_dict.

  Buffers can be accessed as attributes using given names.

Batchnorm의 running mean과 같이 parameter는 아니지만 필요한 값을 사용하기 위해 사용된다. persistent option이 있는데 True이면 module's state_dict에도 저장이 된다. 이름을 이용해서 attribute처럼 접근할 수 있다.

Example

>>> self.register_buffer('running_mean', torch.zeros(num_features))

torch.nn.Module.buffers(recurse=True)

공식설명은 아래와 같다.

Returns an iterator over module buffers

buffer module에서 iterator를 반환한다. recurse option이 True이면 해당 모듈과 submodule의 buffer도 모두 반환하고, 아니면 해당 모듈의 buffer만 반환한다.

Reference

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

0개의 댓글