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으로 설정
'AI Theory > DL Basic' 카테고리의 다른 글
HuggingFace custom dataset 저장하는 방법 (1) | 2023.06.18 |
---|---|
[Pytorch] hook은 왜 있는 것일까? (1) | 2022.09.29 |
[Pytorch] torch.gather vs torch.Tensor.scatter_ (pytorch 인덱싱 방법) (0) | 2022.09.29 |
딥러닝을 위한 경사하강법(Gradient Descent) (1) | 2022.09.23 |
Inception v1,v2,v3,v4는 무엇이 다른가 (+ CNN의 역사) (1) | 2022.03.30 |
댓글