[Boostcamp AI Tech] Pytorch 4~5강

이성범·2022년 1월 25일
0

Boostcamp AI Tech

목록 보기
13/49

AutoGrad & Optimizer & DataSets & DataLoaders

딥러닝 모델의 학습 과정은 일반적으로 모델 정의 -> Optimizer 정의 -> Loss 함수 정의 -> 학습을 위한 데이터셋 정의 -> 학습을 위한 데이터로더 생성 -> 모델 학습 순으로 이루어진다. 본 강에서는 모델 정의 -> Optimizer 정의 -> Loss 함수 정의 부분에 해당하는 AutoGrad & Optimizer와 학습을 위한 데이터셋 정의 -> 학습을 위한 데이터로더 생성 부분에 해당하는 DataSets & DataLoaders 에 대하여 학습을 진행했다.

00. 학습 내용

  • Pytorch의 AutoGrad & Optimizer에 대하여 학습
  • Pytorch의 DataSets & DataLoaders에 대하여 학습

01. AutoGrad & Optimizer

class Layer(nn.Module):
	def __init__(self):
    	  super(Layer, self).__init()
          '''
          파라미터 초기화 부분
          '''
          
        def forward(self):
          '''
          순전파 계산
          '''
          
        def backward(self):
          '''
          역전파 계산
          '''      

        def optimize(self):
          '''
          파라미터 업데이트
          ''' 
  • 딥러닝 모델이랑 여러 레이어의 반복으로 이루어진 구조이며, 레이어를 블록이라고 한다면 여러 블록을 쌓듯이, 해당하는 레이어를 조립해나감으로써 우리는 딥러닝 모델을 만들 수 있다.
  • 이런 레이어의 기본이 되는 구조가 바로 nn.Module 클래스이다.
  • nn.Module
    • 딥러닝을 구성하는 Layer의 base class
    • parameter, forward, backward, optimize 등을 정의할 수 있다.
  • nn.Module의 forward 부분에서는 순전파 계산이 이루어지고, 나온 출력값을 바탕으로 loss 함수와 결합되어 backward 부분에서는 AutoGrad가 수행(딥러닝 프레임 워크를 사용하는 결정적인 이유라고 할 수 있음)되고, 여기서 구해진 미분값을 바탕으로 optimize 부분에서 parameter 업데이트가 이루어지는 과정으로 nn.Module은 작동한다.

02. DataSets & DataLoaders

class CustomDataset(Dataset):
	def __init__(self):
          '''
          변수 설정 및 데이터 전처리 
          '''
          
        def __len__(self):
          '''
          전체 데이터의 개수 반환
          '''
          
        def __getitem__(self, idx):
          '''
          input idx에 해당하는 데이터 반환
          '''
  • Dataset 클래스는 데이터 전처리, 데이터 입력 형태를 정의 등의 역할을 하는, 즉 데이터를 모델에 어떻게 넣을지를 구성하는 클래스라고 할 수 있다.
    • 데이터 형태에 따라서 필요한 함수가 다르기 때문에 사용
    • 모든 것을 데이터 생성 시점에 처리할 필요는 없기 때문에 각 데이터를 사용할 때마다 전처리하기 위해서 사용
    • 데이터 셋에 대한 표준화된 처리방법을 제공하기 위해서 사용
  • DataLoader 클래스는 Dataset에서 정의된 Data를 Batch 단위로 생성 및 변환를 해주는 역할을 한다.(ex, 배치 단위 마다 다른 길이를 가지는 text 데이터의 길이를 맞춰주는 것 등)
    • 학습 직전(GPU에 넣기 전) 데어터를 변환해주는데 사용
    • Tensor 변화과 Batch 처리가 주 역할
    • 병렬적인 데이터 전처리 코드를 만들 때 사용
profile
Machine Learning Engineer at Konan Technology

0개의 댓글