1 minute read

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

Data

위 그림은 모델을 생성하기 까지 데이터가 어떤 형식으로 모델에 기여하는지 보여준다.
Dataset과 DataLoader는 클래스로 이미 생성되어 있으므로 그대로 가져가 써도 되지만 재정의 또는 상속하여 사용가능하다.

Dataset 클래스

  • 데이터 입력 형태를 정의하는 클래스
  • 데이터를 입력하는 방식의 표준화
  • Image, Text, Audio 등에 따른 다른 입력정의

유의점

  • 데이터 형태에 따라 각 함수를 다르게 정의함
  • 모든 것을 데이터 생성 시점에 처리 할 필요가 없다: 학습에 필요한 시점에 변환
  • 데이터에 표준화된 처리방법을 제공 -> 동료, 후임에게 빛과 같은 존재가 될 수 있다.(Hugging Face 찾아보기)

Dataloader 클래스

  • 텐서로 변환, Data Batch를 생성하는 클래스
  • 병렬적인 데이터 전처리 코드의 고민 필요

Comments