PyTorch 모델 구현시 주요 함수들

Cammie·2022년 10월 2일
0

PyTorch

목록 보기
2/4
post-thumbnail

torch.nn.Module

  • 딥러닝을 구성하는 layer의 base class
  • 하나의 function, 여러 function으로 이루어진 layer, layer로 이루어진 model이 포함될 수 있다. (Module이 다른 Module을 포함할 수 있다.)

torch.nn.Sequential

  • 모듈(Module)들을 하나로 묶어 순차적으로 실행시키고 싶을 때 사용

torch.nn.ModuleList

  • 리스트와 같이 인덱싱으로 원하는 모듈을 가져다 쓰고 싶을 때 사용
  • ModuleList를 써야 submodule로 등록하여, 파라미터 값들의 학습이 일어나게 된다.

torch.nn.ModuleDict

  • 딕셔너리와 같이 key값을 통해 원하는 모듈을 가져다 쓰고 싶을 때 사용

torch.nn.Parameter

  • 일반 텐서와 달리 parameter는 계속 최적값으로 업데이트되어야 한다.
  • torch.nn.Parameter 함수를 이용해야 값을 저장하고 계산가능하게 유지해준다.

+ register_buffer를 이용하면, Parameter와 같이 gradient를 계산하여 값을 업데이트해주지는 않지만, 모델 저장시에 buffer값이 저장되게 된다.


named_children vs named_modules

  • 모델 내부의 module들 목록을 확인하게 해주는 함수
  • for name, module in model.named_modules 과 같이 사용하면 된다.
  • named_children은 바로 아래단계의 모듈 목록들을 알려준다.
  • named_modules은 해당 모듈에 속한 모든 모듈을 알려준다. (모듈안에 모듈이 들어갈 수 있으므로, 그렇게 속한 모듈들을 다 알려주는 것)
  • 모듈의 이름이 필요하지 않은 경우에는 named를 뺀, modules, children을 사용하면 된다.

get_submodule

  • 특정 module을 가져와서 쓰고 싶을 때 사용
  • model.get_submodule('서브모듈 이름')과 같이 사용

named_parameters

  • 모델 내부의 Parameter들 목록을 확인하게 해주는 함수
  • for name, parameter in model.named_parameters()과 같이 사용하면 된다.
  • 모듈의 이름이 필요하지 않은 경우에는 named를 뺀, parameters을 사용하면 된다.

get_parameter

  • 특정 모듈에 속한 특정 파라미터를 가져다 쓰고 싶을 때 사용
  • model.get_parameter('모듈이름.파라미터이름')과 같이 사용


0개의 댓글