[부스트캠프 AI Tech] 2주차 Day 2

Mattaaa·2022년 1월 25일
0

[부스트캠프 AI Tech]

목록 보기
7/23

오늘 학습 내용


1. PyTorch (AutoGrad & Optimizer)

2. PyTorch Datasets & DataLoaders




1. PyTorch (AutoGrad & Optimizer)

  • 딥러닝 모델은 Layer를 겹겹히 반복하여 쌓은 것이다.

  • nn.Module 은 이러한 Layer의 Base Class 이다.

딥러닝 모델 정의에 필요한 것

  • Input : 입력 데이터
  • Output : 출력 데이터
  • Parameter : 학습의 대상이 되는 Weight(Tensor)
  • Forward : 예측값 y^\mathbf{\hat{y}} 계산
  • Backward : AutoGrad을 통한 Weight 변화율 계산
  • Optimize : Weight Update

  • Parameter 는 Tensor 객체를 상속 받은 것이다.
  • nn.Module 내에서는 required_grad = True 로 지정되어 학습대상이된다.

  • 대부분의 Layer에 Weights 값들이 지정되어 있기에 직접 지정할 필요는 없다.
    Init 단계에서 각 모듈별 Parameter Load

  • BackWard 과정에서 criterion( y_hat, y ) 을 통해 Loss 계산

  • BackWard 와 Optimizer 는 오버라이딩이 가능하지만, 직접 미분 수식을 작성해야 한다.




2.PyTorch datasets & Dataloaders

  • Dataset 과 DataLoader 객체를 이용해 모델에 데이터를 Feed 한다.

Dataset Class

  • __init__(self), __len__(self), __getitem(self)__ 정의
def __init__(self, x, y):  # 초기 데이터 생성 방법 정의

	self.data = x     
     	self.labels = y
       
def __len__(self):         # 데이터의 전체 길이 반환

	return len(self.labels)
       
def __getitem__(self,idx): # idx가 주어졌을 때 반환하는 데이터 형태

	data = self.data[idx]
    label = self.labels[idx]
    return (data,label)
       
  • 데이터의 형태에 따라 각 함수를 다르게 정의

  • 모든 것을 데이터 생성 시점에 처리하지 않고, 학습에 필요한 시점에 변환


DataLoader Class

  • Data의 Batch를 생성하는 Class

  • Feed 직전 데이터를 변환

  • 데이터를 Tensor 형식으로 변환하고, Batch로 묶는 작업이 메인

  • DataLoader의 Parameters

    • batch_size : Batch의 크기

    • shuffle : 데이터 섞기의 여부

    • Sampler, batch_sampler : 인덱스를 정하는 기법

    • collate_fn : Map-style DataSet 에서 Sample List를 Batch 단위로 바꾸기 위함

0개의 댓글