[PyTorch] Pytorch 구조
Pytorch 구조에대해 알아보자
Pytorch의 Module, Parameter와 Backward 과정과 Pytorch에 구현되어 있는 모듈들을 살펴보고, Dataset, Dataloader에 대해 알아보자.
torch.nn.Module
- 딥러닝을 구성하는 Layer의 base class
- Input, Output, Forward, Backward등을 정의
- 학습의 대상이 되는 Parameter(tensor) 정의
nn.Parameter
- Tensor 객체의 상속 객체
- Parameter 로 선언하면 autograd의 대상이 자동으로 된다.
- 직접 지정할 일은 없으며, 대부분 layer에는 weights 값들이 저장되어있다.
Backward
- Layer에 있는 Parameter들의 미분을 수행한다.
- Forward의 결과값 (model의 output=예측치)과 실제값간의 차이(loss) 에 대해 미분을 수행한다.
- 해당 값으로 Parameter 업데이트한다.
- 실제 backward는 Module 단계에서 직접 지정이 가능하다
- Module에서 backward와 optimizer 오버라이딩 가능
Dataset & Dataloader
위 그림은 모델을 생성하기 까지 데이터가 어떤 형식으로 모델에 기여하는지 보여준다.
Dataset과 DataLoader는 클래스로 이미 생성되어 있으므로 그대로 가져가 써도 되지만 재정의 또는 상속하여 사용가능하다.
Dataset 클래스
- 데이터 입력 형태를 정의하는 클래스
- 데이터를 입력하는 방식의 표준화
- Image, Text, Audio 등에 따른 다른 입력정의
유의점
- 데이터 형태에 따라 각 함수를 다르게 정의함
- 모든 것을 데이터 생성 시점에 처리 할 필요가 없다: 학습에 필요한 시점에 변환
- 데이터에 표준화된 처리방법을 제공 -> 동료, 후임에게 빛과 같은 존재가 될 수 있다.(Hugging Face 찾아보기)
Dataloader 클래스
- 텐서로 변환, Data Batch를 생성하는 클래스
- 병렬적인 데이터 전처리 코드의 고민 필요
Comments