본문 바로가기
AI Theory/DL Basic

[Pytorch] torch.nn.Module에는 어떤 method가 있을까?

by climba 2022. 9. 29.

torch.nn.Module 은 여러 기능을 모아두는 상자 역할을 한다.

하나의 nn.Module 상자가 여러 pytorch의 기능을 모아둘수도 있고, 다른 상자를 포함할수도 있다.

공식 Document 에 올라와있는 nn.Module의 여러 기능을 살펴봐보자.

 

  • add_module( name, module )
    • 현재 모듈에 자식 모듈 추가
  • apply( fn )
    • 모든 하위 모듈에 fn 함수 적용 (ex : parameters초기화)
  • bfloat16( )
    • 모든 부동 소수점 parameters와 buffers를 bfloat16 type으로 캐스트
  • double( )
    • 모든 부동 소수점 parameters와 buffers를 double type으로 캐스트
  • half( )
    • 모든 부동 소수점 parameters와 buffers를 half type으로 캐스트
  • type( dst_type )
    • 모든 parameters와 buffers를 dst_type으로 캐스트
  • buffers( recurse=True )
    • 모든 budder 모듈에 대한 iterater 반환 (for문으로 buffer 모듈을 불러올 수 있다)
  • children( )
    • 자식 모듈에 대한 iterater 반환
  • train( mode = True )
    • 모듈을 훈련 모드로 설정
  • eval( )
    •  모듈을 평가 모드로 설정 (self.train(False)와 동일)
  • extra_repr( )
    •  모듈의 추가 표현 설정
  • forward( * input )
    • 모든 호출에서 수행되는 계산을 정의
    • 모든 하위 클래스에서 재정의해야 함
  • get_buffer( target )
    •  target(문자열)에 해당하는 buffer가 있으면 반환하고, 없으면 오류
  • get_parameter( target  )
    • target(문자열)에 해당하는 parameter가 있으면 반환하고, 없으면 오류
  • get_submodule( target  )
    • target(문자열)에 해당하는 submodule가 있으면 반환하고, 없으면 오류
  • load_state_dict( state_dict, strict = True )
    •  state_dict parameters와 buffers를 이 모듈과 그 자식 모듈로 복사
  • modules( )
    • 네트워크의 모든 모듈에 대한 iterater를 반환
  • named_buffers( prefix = ' ', recures = Ture )
    • 모든 buffer 모듈에 대한 iterater를 반환하여, buffer 이름과 buffer 자체를 모두 생성
  • named_children( )
    • 직계 자식 모듈에 대한 iterater를 반환하여, 모듈 이름과 모듈 자체를 모두 생성
  • named_modules( )
    • 네트워크의 모든 모듈에 대한 iterater를 반환하여, 모듈 이름과 모듈 자체를 모두 생성
  • named_parameters( prefix = ' ', recures = Ture )
    • 모듈 parameters에 대한 iterater를 반환하여 parameters 이름과 parameters 자체를 모두 생성
  • parameters( )
    • 모듈 parameters에 대한 iterater를 반환
  • register_full_backward_hook( hook ) (=>register_backward_hook( )에서 바뀜)
    • 모듈에 역방향 hook를 등록
  • register_buffer( name, tensor, persistent=True )
    • 모듈에 buffer를 추가
  • register_forward_hook( hook )
    • 모듈에 정방향 후크를 등록
    • forward( )에는 영향을 미치지 않고, 내부 입력은 수정 할 수 있다
  • register_forward_pre_hook( hook )
    • 모듈에 정방향 프리훅을 등록
  • register_parameter( )
    • 모듈에 parameter를 추가
  • requires_grad_( require_grad = True )
    • autograd가 이 모듈의 parameters에 대한 작업을 기록해야 하는지 여부를 변경
  • state_dict( *args, destination=None, prefix='', keep_vars=False )
    • 모듈의 전체 상태를 포함하는 dictionary을 반환
  • to( *args, **kwargs )
    • parameters와 buffers를 이동 및/또는 cast
  • to_empty( *, device )
    • 저장소를 복사하지 않고 parameters와 buffers를 지정된 장치로 이동
  • cpu( )
    • 모든 모델 parameters와 buffer를 CPU로 이동
  • cuda( device = None )
    • 모든 모델 parameters와 buffer를 GPU로 이동
  • ipu( )
    • 모든 모델 parameters와 buffer를 IPU로 이동
  • xpu( device = None )
    • 모든 모델 parameters와 buffers를 XPU로 이동
  • zero_grad( set_to_none = False )
    • 모든 모델 매개변수의 기울기를 0으로 설정

댓글